РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1090 of 1163 menu

Класс HttpClient

Класс HttpClient является частью пакета java.net.http и предоставляет функциональность для отправки HTTP-запросов и получения ответов. Он поддерживает как синхронные, так и асинхронные запросы, а также HTTP/1.1 и HTTP/2. В отличие от старого класса HttpURLConnection, HttpClient имеет более удобный и современный API, основанный на паттерне Builder. Экземпляр класса создается с помощью статического метода newHttpClient или через строитель newBuilder, который позволяет настроить такие параметры, как таймауты, следование перенаправлениям, исполнитель и обработчик cookie. Для отправки запроса используется метод send (синхронно) или sendAsync (асинхронно), в который передается объект HttpRequest и обработчик тела ответа HttpResponse.BodyHandler.

Синтаксис

HttpClient client = HttpClient.newHttpClient(); HttpClient client = HttpClient.newBuilder().build();

Пример

Давайте создадим простой HTTP-клиент и отправим GET-запрос на тестовый сервер:

import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; public class Main { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/get")) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } }

Результат выполнения кода (первые строки):

200 { "args": {}, "headers": { "Host": "httpbin.org", "User-Agent": "Java-http-client/17.0.2" }, "url": "https://httpbin.org/get" }

Пример

Давайте настроим клиент с помощью newBuilder, указав таймаут соединения и следование перенаправлениям, а затем отправим POST-запрос с телом:

import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.URI; import java.time.Duration; public class Main { public static void main(String[] args) throws Exception { HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NORMAL) .build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/post")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString("{\"key\":\"value\"}")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); System.out.println(response.body()); } }

Результат выполнения кода (первые строки):

200 { "args": {}, "data": "{\"key\":\"value\"}", "headers": { "Content-Type": "application/json", "Host": "httpbin.org" }, "json": { "key": "value" }, "url": "https://httpbin.org/post" }

Смотрите также

  • метод newHttpClient,
    который создает новый экземпляр HttpClient
  • метод newBuilder,
    который возвращает строитель для настройки клиента
  • метод send,
    который отправляет синхронный HTTP-запрос
  • метод sendAsync,
    который отправляет асинхронный HTTP-запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить