我使用這個問題的源代碼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頭。