Httpclient не возвращает весь ответ - PullRequest
2 голосов
/ 21 марта 2010

При использовании HttpClient 4.0 у меня возникает проблема, из-за которой ответ, полученный от ResponseHandler, составляет лишь половину того, что должно быть на самом деле. ). Кажется, я не могу найти какое-либо место, где мог бы быть какой-то предел, который бы ограничивал это. Есть идеи?

Обновление: я обнаружил еще одну вещь: размер, возвращаемый методом getContentLength сущности, равен -1, тогда как для предыдущего запроса это нормальное значение. Javadoc, кажется, указывает, что означает, что длина неизвестна. Есть идеи, почему это может иметь место?

Обновление 2: я попытался найти ответ для страницы размером более 80 КБ. Интересно, что максимальная длина строки ответа всегда составляет 18210 символов. Есть идеи ??

Ответы [ 3 ]

2 голосов
/ 21 марта 2010

Возможно, это не так, но иногда это может произойти, если вы не очищаете поток где-либо.

1 голос
/ 19 марта 2012

Я обнаружил, что это было вызвано тем, что я звонил client.getConnectionManager().shutdown() ДО прочтения ответа. Я выполнил один из моих finally {} блоков при выполнении запроса, и остановка вызвала состояние гонки, которое иногда приводило к остановке ответа в середине чтения.

Просто так получилось, что getContentLength() также возвращал -1 для меня, что было вызвано заголовком Transfer-Encoding: chunked. Я предполагал, что библиотека HttpClient не правильно обрабатывает фрагментированный ответ, но на самом деле это была моя глупость.

0 голосов
/ 21 марта 2010

Другое место, которое вы должны посмотреть, находится на стороне сервера.

Одна из возможностей заключается в том, что код веб-приложения иногда вызывает колебания на полпути при написании ответа. Другое - ошибка в коде контейнера сервера. Например, я смутно припоминаю, что в некоторых старых версиях Tomcat существовала ошибка, которая приводила к искажению / усечению больших ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...