Ограничение в Java HttpUrlConnection, получающем длину содержания

Право так, я запустил свой проект при создании менеджера загрузок Java, который идет приятно. Единственная проблема, которую я вижу в данный момент, состоит в том, когда я запрашиваю длину содержания URL. Когда я использую метод, предоставленный getContentLength HttpUrlConnection, он возвращает Интервал.

Здорово, если я был только, чтобы когда-либо загрузить файлы, которые составляли меньше чем 2 ГБ в размере файла. Выполнение еще некоторого рытья и находит, что Java не поддерживает неподписанные международные значения, но несмотря на это который только дал бы мне размер файла 4 ГБ максимум.

Может любой помогать мне в правильном направлении получения размера содержания файла, который больше, чем 2 ГБ.

Заранее спасибо.

ОБНОВЛЕНИЕ

Спасибо за Вас отвечают Элитному Джентльмену, я попробовал то, что Вы предложили, но это продолжало возвращать нулевое значение, так вместо этого, что я сделал был

HttpURLConnection conn = (HttpURLConnection) absoluteUrl.openConnection();
conn.connect();
long contentLength = Long.parseLong(conn.getHeaderField("Content-Length"));

По некоторым причинам просто использование conn.getRequestProperty всегда возвращало пустой указатель для меня

10
задан Brendon Randall 19 February 2010 в 09:41
поделиться

1 ответ

Почему бы не попробовать использовать метод headerField для получения длины содержимого? т.е.

HttpURLConnection connection = new HttpURLConnection(...); 
long contentLength = Long.parseLong(connection.getHeaderField("Content-Length"));

Он эквивалентен connection.getContentLength , за исключением того, что возвращаемое значение имеет строковый тип. Это может дать точный результат длины в битах.

ОБНОВЛЕНИЕ: Я обновил его, чтобы использовать HeaderField вместо requestProperty ... спасибо автору вопроса.


Благодаря @FlasH от Ru вы можете достичь того же результата, используя JDK 7 и выше.

По сути, это вызывает новый метод URLConnection.getHeaderFieldLong () , который также был введен в JDK 7 и более поздних версиях.

18
ответ дан 3 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: