簡體   English   中英

iCal4j和換行符

[英]iCal4j and newlines

我正在嘗試從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|

好吧,自己傳遞一個UnfoldingReader似乎可以解決問題。 如果將緩沖區大小設置得足夠大,則可以正確恢復該值。 奇怪。

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

我還將ical4j.properties設置為:

ical4j.unfolding.relaxed=true

不確定這是否有很大的不同,但至少它是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM