Как получить тело ответа от HttpResponse Apache HttpClient5?

Получить код состояния и тело ответа в версии 4 было так просто:

StringEntity entity = new StringEntity(jsonData.toString());
HttpResponse r = org.apache.http.client.fluent.Request.Post(uri)
        .connectTimeout(10*1000)
        .socketTimeout(10*1000)
        .addHeader("Content-Type", "application/json; charset=utf-8")
        .body(entity)
        .execute()
        .returnResponse();
int status = r.getStatusLine().getStatusCode();
String body = EntityUtils.toString(r.getEntity(), "UTF-8");
return new CoolResponse(status, body);

Но теперь в httpclient5 по какой-то причине невозможно получить что-либо, относящееся к телу ответа, из HttpResponse. Очень смущен этим. Если я буду следовать примеру 3 в их кратком руководстве (https://hc.apache.org/httpcomponents-client-5.0.x/quickstart.html) он предлагает мне создать CloseableHttpClient, HttpGet и CloseableHttpResponse, но ни один из них не позволяет вам установить время ожидания соединения. Попытка найти лучшее из обоих миров, но варианты здесь кажутся перемешанными.


person Amalgovinus    schedule 12.05.2020    source источник
comment
Я не понимаю. Вы спрашиваете о теле ответа (которое вы можете получить с помощью getEntity, как показано в связанном примере) или вы спрашиваете о тайм-аутах (которые вы можете увидеть в HttpGet и/или в HttpClient)?   -  person Sotirios Delimanolis    schedule 12.05.2020
comment
То, как в статье предлагается использовать getEntity(), похоже, несовместимо с тем, как я устанавливал тайм-аут. Я не знал, что это можно установить на http-клиенте. Но я увидел, что вы можете установить тайм-ауты внутри конфигурации SimpleHttpRequest, поэтому я решил, что это правильный способ сделать это. Интересно, есть ли другие хорошие статьи о hc5, я прочитал эту и до сих пор не понимаю   -  person Amalgovinus    schedule 12.05.2020


Ответы (1)


Это не упоминается в кратком руководстве, но в свободном API вы можете выполнить execute() с помощью handleResponse() и передать ему лямбду.

Я нашел гораздо лучшую статью, чем краткое руководство здесь: https://ok2c.github.io/httpclient-migration-guide/migration-to-classic.html

person Amalgovinus    schedule 15.05.2020