До HttpClient 4.3
В более старых версиях Http-клиента (до 4.3) мы можем настроить действия клиента с перенаправлениями следующим образом:
@Test
public void givenRedirectsAreDisabled_whenConsumingUrlWhichRedirects_thenNotRedirected()
throws ClientProtocolException, IOException {
DefaultHttpClient instance = new DefaultHttpClient();
HttpParams params = new BasicHttpParams();
params.setParameter(ClientPNames.HANDLE_REDIRECTS, false);
// HttpClientParams.setRedirecting(params, false); // alternative
HttpGet httpGet = new HttpGet("http:/testabc.com");
httpGet.setParams(params);
CloseableHttpResponse response = instance.execute(httpGet);
assertThat(response.getStatusLine().getStatusCode(), equalTo(301));
}
Обратите внимание на альтернативный API, который можно использовать для настройки поведения перенаправления без установки фактического необработанного параметра http.protocol.handle-redirects:
HttpClientParams.setRedirecting(params, false);
Также обратите внимание, что при отключенном отслеживании переадресации теперь мы можем проверить, действительно ли код ответа Http 301 перемещен навсегда - как и должно быть.
После HttpClient 4.3
HttpClient 4.3 представил более чистый, более высокоуровневый API для сборки и настройки клиента:
@Test
public void givenRedirectsAreDisabled_whenConsumingUrlWhichRedirects_thenNotRedirected()
throws ClientProtocolException, IOException {
HttpClient instance = HttpClientBuilder.create().disableRedirectHandling().build();
HttpResponse response = instance.execute(new HttpGet("http://testabc.com"));
assertThat(response.getStatusLine().getStatusCode(), equalTo(301));
}
Обратите внимание, что новый API настраивает весь клиент с этим поведением перенаправления, а не только индивидуальный запрос.
Справка: http://www.baeldung.com/httpclient-stop-follow-redirect