lig*_*igi 2 java okhttp okhttp3
我正在使用 okhttp 下载文件并且一切正常 - 现在我想显示进度并遇到障碍。返回的内容长度为 -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
Run Code Online (Sandbox Code Playgroud)
我在这里将问题追溯到 OkHeaders.java:
public static long contentLength(Headers headers) {
return stringToLong(headers.get("Content-Length"));
}
Run Code Online (Sandbox Code Playgroud)
我在标题中看到所有其他标题 - 但不是 Content-Length - 所以 headers.get("Content-Length") 返回 null。任何人都知道这怎么会丢失?
有趣的是,如果我将 url 更改为“ http://google.com ”,我会从 okhttp 获得内容长度 - 但是 curl 看起来都相同的内容长度 - 这真的让我感到困惑
更新:它似乎与文件的大小相关。如果我使用来自同一服务器的较小的内容,我会得到一个带有 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |