Android2.2以上版本下載網路檔案getContentLength()大小異常
接手一個專案出現一個問題2.2以上的版本下載網路資源不完整無法更新。check程式碼後發現通過HttpURLConnection.getContentLength()獲取的size跟下載下來的file的legth不等。奇怪的是下載3個檔案前2個都pass最後一個下載的檔案的長度比 HttpURLConnection.getContentLength()獲取的size小。自己搭建了個tomcat伺服器就正常了。為什麼.net伺服器就不行。這麼詭異的問題恐怕只能請apache組織來解決了。
不過經過小弟對 HttpURLConnection的原始碼的挖掘,發現了HttpURLConnection跟服務互動採用了"gzip"壓縮。所以下載的fileLegth > HttpURLConnection.getContentLength().參考api:
By default, this implementation of
不過經過小弟對 HttpURLConnection的原始碼的挖掘,發現了HttpURLConnection跟服務互動採用了"gzip"壓縮。所以下載的fileLegth > HttpURLConnection.getContentLength().參考api:
By default, this implementation of
HttpURLConnection
requests
that servers use gzip compression. Since getContentLength()
returns
the number of bytes transmitted, you cannot use that method to predict how many bytes can be read from getInputStream()
.
Instead, read that stream until it is exhausted: whenread()
returns
-1.
api上也不推薦是用該方法來驗證檔案的完整性。可目前專案有不能修改伺服器。通過繼續研究api發現這種gzip壓縮方式是可以取消的。取消辦法這http request的head中設定如下引數即可:
urlConnection.setRequestProperty("Accept-Encoding", "identity");
至此基本上面詭異的問題修復。2.2以上的版本預設都是採用壓縮優化希望大家注意。關於檔案的完整性驗證希望大家還是走md5吧。
相關文章
- iOS開發網路篇之檔案下載、大檔案下載、斷點下載iOS斷點
- 檢查 http url 下載檔案的大小(qbit)HTTP
- 異常與檔案操作
- 【SpringMVC】檔案上傳與下載、攔截器、異常處理器SpringMVC
- 根據網路連線(檔案連結)下載檔案到本地
- Android下載網路pdf檔案儲存至本地Android
- Dropshare 5 Mac下載,網路檔案安全共享Mac
- 檔案上傳的異常
- 網路異常測試初探
- docker 怎麼下載指定版本的映象檔案Docker
- 國雙:2020年國內網際網路異常流量白皮書(附下載)內網
- LoadRunner中如何驗證下載的檔案大小、統計下載時間、度量下載速度?
- windows下檔案系統支援的檔案大小Windows
- Android okHttp網路請求之檔案上傳下載AndroidHTTP
- 方便的網路下載工具wget 可下載網站目錄下的所有檔案(可下載整個網站)wget網站
- JAVA類檔案操作和異常Java
- python的檔案和異常Python
- muduo網路庫Exception異常類Exception
- 檔案下載
- Ubuntu IOS檔案映象下載網站UbuntuiOS網站
- 如何用程式下載網上檔案
- 磁力連線是如何接入DHT網路並下載檔案的
- Asp.net C# 檔案下載,附件下載程式碼案例,不顯示檔案路徑ASP.NETC#
- windows 打補丁後網路異常Windows
- 澳大利亞少年入侵蘋果網路:非法下載90GB安全檔案蘋果
- 用java實現基於http協議的網路檔案下載JavaHTTP協議
- Linux Shell 下載網站指定檔案Linux網站
- 網路網賭系統注單異常賬戶異常提款不了怎麼辦?
- 00、下載檔案
- Ajax 下載檔案
- FastApi下載檔案ASTAPI
- MVC 下載檔案MVC
- js 檔案下載JS
- Servlet下載檔案Servlet
- httpWebRequest 檔案下載HTTPWeb
- php檔案下載PHP
- .net 檔案下載
- php 檔案下載PHP