我正在开发一个项目,我必须使用 HttpUrlConnection (Android~)来读取输入流。
事实证明,当我正在阅读输入流时,数据格式错误,并且原始内容(由服务器发送)的大小更大。现在,服务器响应标头包含“Content-Length”和“Transfer-Encoding:chunked”,据我所知这是一个问题,因为它们都不应该'共存。
除此之外,从 HttpUrlConnection 收到的输入流包含所有正文内容(使用块偏移信息)。
我有两个问题:
答案 0 :(得分:2)
HttpUrlConnection应该处理分块数据,你需要更正。您完全看到这些标题的事实意味着它们可能在某处发生了格式错误,并且某些内容已经发送了\n\n
或\r\n\r\n
,因此HttpUrlConnection将其视为一部分实际的传输。
如果您想获取原始数据,请使用套接字并连接到正确端口上的URL(对于ssl可能为80,443)
在connect()方法下编辑:java.net.URLConnection状态
与资源互动;查询标题字段和内容。
这表明URLConnection在从任何提供的阅读器中读取任何内容之前,会查询标题信息。请原谅我第一次不包括这个。