Длина содержимого okhttp равна -1 для больших файловJAVA

Программисты JAVA общаются здесь
Anonymous
Длина содержимого okhttp равна -1 для больших файлов

Сообщение Anonymous »

Я загружаю файл с помощью 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"));
}
Я вижу здесь все остальные заголовки, но не Content-Length, поэтому headers.get("Content-Length") возвращает значение null. Кто-нибудь знает, как это может потеряться?

Интересно, что если я изменю URL-адрес на «http://google.com», я получу длину контента от okhttp - но с завитком оба выглядят одинаково по длине контента - это меня действительно смущает.

Обновление: похоже, это коррелирует с размером файла. Если я использую меньший контент с того же сервера, я получаю Content-Length с помощью okhttp. Проблема возникает только тогда, когда файл большой

Вернуться в «JAVA»