簡體   English   中英

okhttp內容長度為-1,且帶有大文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM