【问题标题】:Java servlet request javax.xml.stream.XMLStreamException - Premature end of fileJava servlet 请求 javax.xml.stream.XMLStreamException - 文件过早结束
【发布时间】:2013-03-13 23:09:01
【问题描述】:

我正在尝试从 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. 第一种情况:

    GET /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; isPC=1

    Cookie2:$Version=1

  2. 第二种情况:

    GET /rss/... HTTP/1.1

    缓存控制:无缓存

    编译指示:无缓存

    用户代理:Java/1.6.0_39

    主机:www.host.com

    接受:text/html、image/gif、image/jpeg、*; q=.2, /; q=.2

    连接:保持活动

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

【问题讨论】:

    标签: java google-app-engine servlets jetty httprequest


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多