java - iCal4j 和换行符

标签 java ical4j

我正在尝试从 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/

除了这个异常(exception):

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

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

关于java - iCal4j 和换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2767535/

相关文章:

java - Spring Boot 中仅在请求记录 CommonsRequestLoggingFilter 之前设置

java - 使用 EJB 定时器服务执行外部服务

java - Basic Java - 请用一种方法帮助一个压力很大的菜鸟?

java - 如何通过日历 URL 在 Java 程序中使用 iCal 日历?

java - 如何解决AWS Elastic Beanstalk中的SMTP连接超时异常?

java - Android 音频记录和播放已损坏

outlook - 如何将 ICS session 自动添加到组织者的日历中?

java - 我无法使用 iCal4j 正确设置 Activity 日期

java - iCal4J 错误 : net. fortuna.ical4j.util.Configurator <clinit>

java - 未找到 LoggerFactory 类