Java okhttp内容长度为-1,包含大文件

Java okhttp内容长度为-1,包含大文件,java,okhttp,okhttp3,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 Cont

我正在下载一个带有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
我在这里将问题追溯到OkHeaders.java:

 public static long contentLength(Headers headers) {
    return stringToLong(headers.get("Content-Length"));
 }
我在headers中看到了所有其他头,但没有看到Content Length,因此headers.get(“Content Length”)返回null。有人知道这是怎么弄丢的吗

有趣的是,如果我将url更改为“”,我会从okhttp获得一个内容长度-但使用curl时,两者的内容长度看起来是相同的-这让我很困惑


更新:它似乎与文件的大小相关。如果我使用来自同一服务器的较小内容,我将使用okhttp获得内容长度。只有当文件很大时才会出现问题,因为它看起来超过了服务器使用的特定大小,并且您无法获得内容长度

HTTP/1.1 200 OK
Date: Tue, 14 Jun 2016 14:30:07 GMT
Content-Type: application/octet-stream
Transfer-Encoding: chunked

有多少字节是“file is big”?27兆字节的大小?但是为什么我会看到curl的内容长度?我怀疑因为okhttp自动宣传gzip支持,我得到了curl与
curl-I-H“Accept Encoding:gzip”-s相同的行为http://ipfs.io/ipfs/QmRMHb4Vhv8LtYqw8RkDgkdZYxJHfrfFeQaHbNUqJYmdF2