【发布时间】:2013-01-31 22:36:08
【问题描述】:
我正在使用这个问题的源代码How to asynchronous perform a httprequest and show the progress of downloading the response 来获取网页的 html 源并显示一个进度条,其中包含到目前为止下载的数据以及页面的总大小。
该特定代码实际上在 ICS 4.0.3 上不起作用,因为 clHeaders[0] 没有指向任何内容,并且在索引 0 处引发了一个称为 ArrayIndexOutOfBounds 的异常,因为服务器响应中省略了 Content-Length 标头。我尝试使用 getContentLength 以防出现问题 - 它返回负值 -1 然后我遍历所有标题并且 Content-Length 不存在。删除这些位后,代码工作正常,网页被提取,写入文件并显示正在下载的大小,但显然不是最终大小,直到我真正下载它为止。
我对原因只有三个想法:
- 我没有发送 Content-Length 标头,因此我也没有收到 - 但这听起来不对。另外,我不知道 HttpClient 是否没有在后台发送一个。
- 我在这里读到另一个问题,如果服务器的响应是流式传输或分块的,那么 getContentLength 可以返回 -1。
- 压缩包?但我不知道如何禁用它,或者它是否一开始就启用了
如果您认为是服务器损坏了,我尝试了包括 Google 在内的许多网站,但仍然没有任何 Content-Length 标头。
【问题讨论】:
标签: android http-headers