[英]okhttp content-length is -1 with big files
我正在使用okhttp下載文件,並且一切正常-現在,我想顯示進度並遇到麻煩。 返回的content-length為-1。 它從服務器正確返回:
⋊> ~ curl -i http://ipfs.io/ipfs/QmRMHb4Vhv8LtYqw8RkDgkdZYxJHfrfFeQaHbNUqJYmdF2 13:38:11
HTTP/1.1 200 OK
Date: Tue, 14 Jun 2016 11:38:16 GMT
Content-Type: application/octet-stream
Content-Length: 27865948
我在這里將問題追溯到OkHeaders.java:
public static long contentLength(Headers headers) {
return stringToLong(headers.get("Content-Length"));
}
我在標頭中看到了所有其他標頭,但沒有看到Content-Length,因此headers.get(“ Content-Length”)返回null。 任何人都有線索怎么會迷路?
有趣的是,如果我將URL更改為“ http://google.com ”,則會從okhttp獲得一個內容長度-但是使用curl時,它們在Content-Length上看起來都是相同的-這確實使我感到困惑
更新:似乎與文件大小相關。 如果我從同一台服務器使用較小的內容,則可以使用okhttp獲得Content-Length。 僅當文件很大時才會出現問題
看起來超過一定大小,服務器使用分塊編碼 ,您將不會獲得內容長度。
HTTP/1.1 200 OK
Date: Tue, 14 Jun 2016 14:30:07 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.