0

我正在尝试读取和解析来自 2 个码头服务器(Eclipse - Google 插件)的 rss 提要:一个启用了 App Engine SDK,一个没有启用。1. 当我在启用了应用程序引擎的码头运行测试时,它工作正常 2. 当我在没有启用应用程序引擎的码头服务器上使用相同的代码时,我收到以下消息(因为收到的文本为空):

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] 消息:文件过早结束。

我搜索了输入流的过早读取的代码(我使用 new URL(host) 和 url.openStream() 来读取输入),但代码是好的(如果不是,它可能不会在第一种情况)。

我使用 tcpdump (-s 1024 -l -A dst host.com -i wlan0) 来检查标题:

  1. 第一种情况:

    获取 /rss/... HTTP/1.1

    主机:www.host.com

    连接:保持活动

    Cookie:环境=a%3A2%3A%7Bs%3A4%3A%22skin%22%3Bs%3A7%3A%22default%22%3Bs%3A4%3A%22lang%22%3Bs%3A5%3A%22ro_RO%22% 3B%7D; 是PC=1

    Cookie2:$版本=1

  2. 第二种情况:

    获取 /rss/... HTTP/1.1

    缓存控制:无缓存

    Pragma:无缓存

    用户代理:Java/1.6.0_39

    主机:www.host.com

    接受:文本/html、图像/gif、图像/jpeg、*;q=.2, / ; q=.2

    连接:保持活动

这些标题可能是问题吗?有没有办法设置完全相同的标题?它会解决问题吗?

4

1 回答 1

0

我认为问题出在 User-Agent 标头上,它决定了某些服务器为某些值发送空内容(例如在我的情况下为 Jav/1.6.0_39)。我将 User-Agent 设置为空字符串,现在响应正常。

于 2013-03-25T08:14:37.163 回答