Есть ли способ не загружать тело при вызове Java HttpClient, когда ресурс большой? - PullRequest
1 голос
/ 01 декабря 2010

Я пытаюсь предотвратить загрузку тела org.apache.http.client.HttpClient ( текст ссылки ), если ресурс, скажем, превышает 10 МБ.

То, что я сделал после поиска здесь, и другие, это сделать вызов HEAD, затем проверить заголовок Content-Length, и если он

Было бы лучшее решение для этого? Я хочу избежать дополнительного звонка.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Наилучшим способом, безусловно, является выполнение HTTP HEAD с момента запроса HEAD для только информации заголовка файла или ресурса (как указано в RFC1945 , раздел 8.2).

Из ответа на запрос HEAD извлеките заголовок сообщения Content-Length и посмотрите, не превышает ли его размер 10 МБ или больше.

Выполнение GET приведет к возвращению полного тела сущности.

Apache HttpClient (версия 3) поддерживает HTTP HEAD.

2 голосов
/ 01 декабря 2010

Вы всегда можете сделать обычный звонок и проверить длину, а если длина> 10 МБ, то просто прервите и отмените загрузку. Но проблема в том, что сокет по-прежнему будет загружать как можно больше, прежде чем вы отмените. Я думаю, что выполнение вызова HEAD - лучший метод.

...