Метод followRedirects
Метод followRedirects класса HttpClient
устанавливает политику обработки перенаправлений
(редиректов) для HTTP-запросов. В качестве параметра
метод принимает значение перечисления
HttpClient.Redirect, которое определяет,
будет ли клиент автоматически следовать за ответами
с кодами 3xx. Если политика не задана явно,
по умолчанию используется значение
Redirect.NEVER - перенаправления
не выполняются. Метод возвращает объект
HttpClient, что позволяет использовать
цепочку вызовов.
Синтаксис
HttpClient client = HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.ALWAYS)
.build();
Пример
Давайте создадим HTTP-клиент, который автоматически следует за перенаправлениями, и выполним запрос:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.ALWAYS)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
200
Пример
Давайте создадим HTTP-клиент, который следует
за перенаправлениями только внутри одного
HTTP-протокола (с http на http
или с https на https):
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.NORMAL)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.uri());
}
}
Результат выполнения кода:
"http://example.com"
Пример
Давайте создадим HTTP-клиент, который никогда
не следует за перенаправлениями, и получим
код ответа 301 или 302:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.NEVER)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
301
Смотрите также
-
класс
HttpClient,
который выполняет HTTP-запросы -
метод
followRedirects,
который задает политику перенаправлений у Builder -
метод
send,
который отправляет HTTP-запрос -
метод
sendAsync,
который отправляет HTTP-запрос асинхронно