EntityUtils.toString выдает исключение java .io.EOFException, если длина содержимого не указана в заголовке ответа - PullRequest
0 голосов
/ 07 августа 2020

Я выполняю HTTP-вызов Get, используя Apache HTTPClient (4.x).

httpResponse = httpClient.execute(call, context);
HttpEntity responseEntity = httpResponse.getEntity();
content = EntityUtils.toString(responseEntity);

Он выдает следующее исключение заметил, что сервер не отправляет заголовок Content Length (вероятно, из-за Transfer-Encoding: chunked). Еще я заметил, что код ответа 302 Moved Temporarily. Я ожидал, что EntityUtils.toString вернет нулевой или пустой ответ. но генерирует исключение.

Это ожидаемое поведение? или надо добавить дополнительную обработку? Этот код был в общей структуре и работал для всех других HTTP-вызовов.

Заголовки ответа:

HttpResponseProxy{
HTTP/1.1 302 Moved Temporarily [
Vary: Accept, Accept-Encoding, 
Set-Cookie: <cookie>; Version=1; Expires=Fri, 06-Aug-2021 22:43:02 GMT; Max-Age=31536000; Domain=.openx.net; Path=/, 
Server: OXGW/16.191.0, 
P3P: CP="CUR ADM OUR NOR STA NID", 
Location: <redirect URL>, 
Date: Thu, 06 Aug 2020 22:43:02 GMT, 
Content-Type: text/html, Via: 1.1 google, Alt-Svc: clear, 
Transfer-Encoding: chunked] org.apache.http.client.entity.DecompressingEntity@68ef95e1}

Объект ответа: -

ResponseEntityProxy{[Content-Type: text/html,Content-Encoding: gzip,Chunked: true]}
...