October 14, 2021

HttpClient. Отправка запросов и получение ответов

https://t.me/source_coding

Создадим объект HttpClient для отправки запроса:

(Сервером выступает написанное мной REST приложение на Spring Boot)

HttpClient httpClient = HttpClient.newBuilder()
    .version(HttpClient.Version.HTTP_1_1)
    .build();

Теперь создадим сам запрос:

String API_URL = "http://localhost:8080/employee/1";

HttpRequest httpRequest = HttpRequest.newBuilder(URI.create(API_URL))
    .build();

Запросы можно отправлять как синхронно, так и асинхронно (методы объекта HttpClient):

  • send() - мы ждем, пока не получим ответ
  • sendAsync() - здесь ответ приходит асинхронно, то есть, код дальше себе выполняется, ответ может прийти потом, или вовсе не прийти

HttpResponse<String> response = httpClient.send(httpRequest, 
    HttpResponse.BodyHandlers.ofString());

Синхронный метод send() возвращает HttpResponse, который содержит все необходимое - заголовки, тело ответа, статус-код и так далее.

BodyHandlers - через него указывается метод обработки тела ответа. Записать в файл, получить массив байт или строку. В нашем случае, тело будет преобразовано в строку

Выведем в консоль тело ответа

System.out.println(response.body());
{"id":1,"name":"Maria","surname":"Kozhevnikova","age":21,"position":"Junior","speciality":"Golang","specType":"Developer"}

Если API_URL будет, к примеру, https://www.google.com/, в теле ответа мы получим HTML страницу: