Найти в Дзене

Apache HttpClient – Не следовать перенаправлениям

Оглавление

1. Обзор

В этой статье мы узнаем, как настроить Apache HttpClient так, чтобы он перестал выполнять переадресацию.

По умолчанию, следуя спецификации HTTP,
HttpClient будет автоматически выполнять переадресацию.

Для некоторых случаев использования это может быть совершенно нормально, но, безусловно, есть случаи использования, когда это нежелательно – и сейчас мы рассмотрим, как изменить это поведение по умолчанию и прекратить следовать перенаправлениям.

2. Не переходите по перенаправлениям

2.1. Конфигурация – HttpClient 5

@Test
void givenRedirectsAreDisabled_whenConsumingUrlWhichRedirects_thenNotRedirected() throws IOException {

final HttpGet request = new HttpGet("http://t.co/I5YYd9tddw");

try (CloseableHttpClient httpClient = HttpClients.custom()
.disableRedirectHandling()
.build()) {
httpClient.execute(request, response -> {
assertThat(response.getCode(), equalTo(301));
return response;
});
}
}

2.2. Конфигурация – HttpClient 4.5

@Test
void givenRedirectsAreDisabled_whenConsumingUrlWhichRedirects_thenNotRedirected() throws IOException {
CloseableHttpClient instance = HttpClients.custom().disableRedirectHandling().build();

final HttpGet httpGet = new HttpGet("http://t.co/I5YYd9tddw");
CloseableHttpResponse response = instance.execute(httpGet);

assertThat(response.getStatusLine().getStatusCode(), equalTo(301));
}

3. Заключение

В этом кратком руководстве рассказывалось о настройке Apache HttpClient, чтобы он автоматически не следовал перенаправлениям HTTP.

Оригинал статьи: https://www.baeldung.com/httpclient-stop-follow-redirect