سؤال
أحاول قراءة موجز تقويم من http://meetup.com/, ، ولكن يبدو أن ical4j غير قادر على التعامل مع خطوط الخطوط في سمات X-original-url: يفشل في هذا السطر:
X-ORIGINAL-URL:http://www.meetup.com/chicagoscala/calendar/ical/The+Chicago
-Area+Scala+Enthusiasts+(CASE)+Meetup+Group/
مع هذا الاستثناء:
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)
لقد قدمت خطأً لذلك ، لكنني لم أحصل على أي رد بعد. هل هذه مشكلة معروفة؟
راجع للشغل ، هذا مقتطف من hexdump لهذا الملف:
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|
المحلول
حسنًا ، يبدو أن المرور في قائد تتكشف بنفسك يقوم بالخدعة. إذا قمت بتعيين حجم المخزن المؤقت الكبير بما فيه الكفاية ، فسيكون قادرًا على استعادة القيمة بشكل صحيح. غريب.
reader = new UnfoldingReader(new InputStreamReader(uri.toURL().openStream()), 3000);
return new CalendarBuilder().build(reader);
أنا أيضا تعيين ical4j.properties على هذا:
ical4j.unfolding.relaxed=true
لست متأكدًا مما إذا كان ذلك قد أحدث فرقًا كبيرًا ، ولكنه يعمل على الأقل.
لا تنتمي إلى StackOverflow