我正在使用这个问题的源代码如何异步执行 httprequest 并显示下载响应的进度, 以便获取网页的 html 源并显示一个进度条,其中包含到目前为止下载的数据以及页面的总大小是多少。
该特定代码实际上不适用于 ICS 4.0.3,因为 clHeaders[0] 没有指向任何内容,并且在索引 0 处引发了称为 ArrayIndexOutOfBounds 的异常,因为服务器响应中省略了 Content-Length 标头。我尝试使用 getContentLength 以防出现问题 - 它返回负值 -1 然后我遍历所有标题并且 Content-Length 不存在。删除这些位后,代码工作正常,网页被提取,写入文件并显示正在下载的大小,但显然不是最终大小,直到我真正下载它。
我对原因只有三个想法:
- 我没有发送 Content-Length 标头,因此我也没有收到 - 但这听起来是错误的。另外,我不知道 HttpClient 是否没有在后台发送一个。
- 我在这里读到另一个问题,如果服务器的响应是流式传输或分块的,那么 getContentLength 可以返回-1。
- 压缩包?但我不知道如何禁用它或者是否首先启用它
如果您认为是服务器坏了,我尝试了包括 Google 在内的许多网站,但仍然没有任何 Content-Length 标头。