October 14, 2021
HttpClient. Отправка запросов и получение ответов
Создадим объект 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 страницу: