Frage

Ich versuche, einen Kalender-Feed von http://meetup.com/ zu lesen, aber es scheint, dass iCal4j kann nicht mit Zeilenumbrüchen in X-ORIGINAL-URL behandeln Attributen: es auf dieser Linie versagt:

X-ORIGINAL-URL:http://www.meetup.com/chicagoscala/calendar/ical/The+Chicago
 -Area+Scala+Enthusiasts+(CASE)+Meetup+Group/

Mit dieser Ausnahme:

net.fortuna.ical4j.data.ParserException: Error at line 7: Illegal property [ -AREA+SCALA+ENTHUSIASTS+(CASE)+MEETUP+GROUP/]
    at net.fortuna.ical4j.data.CalendarParserImpl.parse(CalendarParserImpl.java:133)
    at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:174)
    at net.fortuna.ical4j.data.CalendarBuilder.build(CalendarBuilder.java:155)

reichte ich einen Fehler für sie, aber ich habe noch keine Antwort vor. Ist das ein bekanntes Problem?

BTW, ist dies ein Ausschnitt aus einer hexdump dieser Datei:

00000060  4e 0a 58 2d 4f 52 49 47  49 4e 41 4c 2d 55 52 4c  |N.X-ORIGINAL-URL|
00000070  3a 68 74 74 70 3a 2f 2f  77 77 77 2e 6d 65 65 74  |:http://www.meet|
00000080  75 70 2e 63 6f 6d 2f 63  68 69 63 61 67 6f 73 63  |up.com/chicagosc|
00000090  61 6c 61 2f 63 61 6c 65  6e 64 61 72 2f 69 63 61  |ala/calendar/ica|
000000a0  6c 2f 54 68 65 2b 43 68  69 63 61 67 6f 0a 20 2d  |l/The+Chicago. -|
000000b0  41 72 65 61 2b 53 63 61  6c 61 2b 45 6e 74 68 75  |Area+Scala+Enthu|
000000c0  73 69 61 73 74 73 2b 28  43 41 53 45 29 2b 4d 65  |siasts+(CASE)+Me|
War es hilfreich?

Lösung

Ok, in einem UnfoldingReader vorbei scheint sich den Trick zu tun. Wenn Sie die Puffergröße groß genug gesetzt ist, wird es in der Lage sein, den Wert korrekt wiederherzustellen. Seltsam.

reader = new UnfoldingReader(new InputStreamReader(uri.toURL().openStream()), 3000);
return new CalendarBuilder().build(reader);

ich auch ical4j.properties auf diesen Satz:

ical4j.unfolding.relaxed=true

Nicht sicher, ob die einen großen Unterschied gemacht, aber zumindest funktioniert es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top