我使用这个问题的源代码How to asynchronous perform a httprequest and show the progress of downloading the response为了获取一个网页的html源代码,并显示一个进度条到目前为止的下载数据和多大的页面总大小。为什么在使用HttpClient时从服务器响应中忽略Content-Length头?
该特定的代码实际上并没有在ICS 4.0.3上工作,因为clHeaders [0]没有指向任何内容,并且在索引0处引发了一个异常,称为ArrayIndexOutOfBounds,因为服务器的响应中省略了Content-Length头。我尝试过使用getContentLength来解决这个问题 - 它返回-1的负值,然后遍历所有的头文件,并且Content-Length不在那里。删除这些位后,代码工作正常,并提取网页,写入文件,并显示下载时的大小,但显然不是最终大小,直到我实际下载它。
我只有事业的三个想法:
- 我不发送Content-Length头因此我没有收到任何一个 - 不过这听起来是错误的。另外我不知道如果HttpClient不在后台发送一个。
- 我在这里读到另一个问题,如果服务器的响应是流式传输或分块,那么getContentLength可以返回-1。
- Gzip?但我不知道如何禁用它,或者如果它首先启用
如果您认为这是服务器坏了,我尝试了很多网站,包括谷歌,仍然没有任何Content-Length头。