Класс HttpClient.Builder
Класс HttpClient.Builder является вложенным классом
в HttpClient и используется для создания
экземпляров HttpClient с заданными настройками.
Получить объект HttpClient.Builder можно
через статический метод newBuilder класса
HttpClient. Билдер предоставляет методы для
установки политики перенаправлений, таймаута соединения,
исполнителя для асинхронных задач и других параметров.
После настройки всех параметров вызывается метод
build, который возвращает готовый объект
HttpClient.
Синтаксис
HttpClient.Builder builder = HttpClient.newBuilder();
builder.followRedirects(Redirect policy);
builder.connectTimeout(Duration duration);
builder.executor(Executor executor);
HttpClient client = builder.build();
Пример
Давайте создадим HTTP-клиент с таймаутом соединения
в 10 секунд и политикой перенаправлений
NORMAL, а затем выполним GET-запрос:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
}
}
Результат выполнения кода:
200
Пример
Давайте создадим клиент с пользовательским исполнителем
для асинхронных запросов и политикой перенаправлений
NEVER:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.concurrent.Executors;
public class Main
{
public static void main(String[] args) throws Exception
{
HttpClient client = HttpClient.newBuilder()
.followRedirects(HttpClient.Redirect.NEVER)
.executor(Executors.newFixedThreadPool(4))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.uri());
}
}
Результат выполнения кода:
"https://example.com"
Смотрите также
-
класс
HttpClient,
который представляет HTTP-клиент -
метод
newBuilder,
который создает объект HttpClient.Builder -
метод
build,
который создает объект HttpClient -
метод
send,
который отправляет синхронный HTTP-запрос