我正在使用这个问题的源代码如何异步执行http请求并显示下载响应的进度来获取网页的html源代码,并显示一个进度条,展示已经下载了多少数据以及页面的总大小。
由于服务器的响应中省略了Content-Length头,所以那段代码在ICS 4.0.3上实际上并不起作用,因为clHeaders[0]指向为空,会引发一个名为ArrayIndexOutOfBounds的异常,并且无法正常工作。我尝试使用getContentLength来解决这个问题 - 它返回一个负值-1,然后我遍历了所有的头文件,但Content-Length不存在其中。删除这些部分后,代码能够正常运行,成功获取网页,将其写入文件,并在下载过程中显示大小,但显然不能显示最终大小,直到我真正下载完它。
我只有三个想法:
- 我没有发送Content-Length头,因此我也没有收到它 - 但这听起来不对。并且我不知道HttpClient是否在后台发送它。
- 我在另一个问题中读到,如果服务器的响应是流式的或分块的,则getContentLength可能会返回-1。
- gzip?但我不知道如何禁用它,或者它是否已经启用。
如果你认为是服务器出了问题,我尝试了许多网站,包括Google,但仍然没有Content-Length头。