HttpUrlConnection读取分块响应

时间:2014-05-07 06:52:34

标签: java android http

我正在开发一个项目,我必须使用 HttpUrlConnection (Android~)来读取输入流。

事实证明,当我正在阅读输入流时,数据格式错误,并且原始内容(由服务器发送)的大小更大。现在,服务器响应标头包含“Content-Length”“Transfer-Encoding:chunked”,据我所知这是一个问题,因为它们都不应该'共存。

除此之外,从 HttpUrlConnection 收到的输入流包含所有正文内容(使用块偏移信息)。

我有两个问题:

  • HttpUrlConnection 不应该处理分块数据吗?
  • 如何在没有分块信息的情况下从输入流中获取数据?

1 个答案:

答案 0 :(得分:2)

HttpUrlConnection应该处理分块数据,你需要更正。您完全看到这些标题的事实意味着它们可能在某处发生了格式错误,并且某些内容已经发送了\n\n\r\n\r\n,因此HttpUrlConnection将其视为一部分实际的传输。

如果您想获取原始数据,请使用套接字并连接到正确端口上的URL(对于ssl可能为80,443)

在connect()方法下编辑:java.net.URLConnection状态

  

与资源互动;查询标题字段和内容。

这表明URLConnection在从任何提供的阅读器中读取任何内容之前,会查询标题信息。请原谅我第一次不包括这个。