Есть ли способ предотвратить Apache CloseableHttpClient от выброса HttpResponseException? - PullRequest
0 голосов
/ 22 февраля 2020

Я использую Apache HttpComponents (4.5.11) для тестирования веб-API.

Для отрицательного тестирования (например, отправка неверного запроса) я также хочу проверить тело ответа, но CloseableHttpClient выдает HttpResponseException с кодом состояния ответа вместо возврата фактического ответа. Есть ли способ предотвратить это или я должен просто переключиться на другую библиотеку (например, RestAssured)?

Вот как я это делаю:

try (CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = httpClient.execute(request)) {
     ResponseHandler<String> handler = new BasicResponseHandler();
     String body = handler.handleResponse(response);
     //Deserialize and perform response assertions..
} catch(HttpResponseException e){
    //Exception is caught here..
}

pom. xml зависимость:

    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.11</version>
    </dependency>

1 Ответ

1 голос
/ 22 февраля 2020

Я не уверен, что понимаю проблему. Ничто не мешает вам получить код состояния и прочитать содержимое ответа непосредственно из объекта ответа.

try (CloseableHttpClient httpClient = HttpClients.createDefault();
     CloseableHttpResponse response = httpClient.execute(request)) {
    int statusCode = response.getStatusLine().getStatusCode();
    final HttpEntity entity = response.getEntity();
    if (entity != null) {
        try (InputStream inputStream = entity.getContent()) {
            // Do something useful with the response
        }
    }
}
...