Класс HttpResponse.BodyHandlers
Класс HttpResponse.BodyHandlers является частью HTTP-клиента Java и представляет собой фабрику готовых обработчиков для тела ответа. Он используется в методах send и sendAsync класса HttpClient для указания того, в каком виде необходимо получить данные от сервера. Класс содержит статические методы, каждый из которых возвращает объект типа BodyHandler. Первый параметр методов определяет целевой тип данных, а дополнительные параметры (например, кодировка или путь к файлу) уточняют логику обработки.
Синтаксис
HttpResponse.BodyHandlers.ofString()
HttpResponse.BodyHandlers.ofString(Charset charset)
HttpResponse.BodyHandlers.ofByteArray()
HttpResponse.BodyHandlers.ofFile(Path path)
Пример
Давайте получим тело ответа в виде строки, используя обработчик ofString:
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.newHttpClient();
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.body().substring(0, 20));
}
}
Результат выполнения кода (первые 20 символов ответа):
"<!doctype html>..."
Пример
Давайте получим тело ответа в виде массива байтов и выведем его длину:
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.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
HttpResponse<byte[]> response = client.send(
request,
HttpResponse.BodyHandlers.ofByteArray()
);
System.out.println(response.body().length);
}
}
Результат выполнения кода:
1256
Смотрите также
-
класс
HttpResponse,
который представляет ответ сервера -
метод
body,
который возвращает тело ответа -
метод
ofFile,
который сохраняет тело в файл -
метод
send,
который отправляет запрос и получает ответ