Метод ofString класса HttpResponse.BodyHandlers
Метод ofString класса HttpResponse.BodyHandlers
возвращает объект BodyHandler<String>, который
преобразует тело HTTP-ответа в строку. Это один из самых
удобных способов получить текстовый ответ от сервера.
В первом параметре метода мы передаем кодировку
(объект Charset), которая будет использоваться
для декодирования байтов в строку. Если параметр не
указан, используется кодировка UTF-8.
Синтаксис
HttpResponse.BodyHandlers.ofString()
HttpResponse.BodyHandlers.ofString(charset)
Пример
Давайте создадим HTTP-запрос и получим тело ответа
в виде строки, используя обработчик ofString
без параметров (кодировка UTF-8 по умолчанию):
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()
);
String res = response.body();
System.out.println(res);
}
}
Результат выполнения кода (фрагмент HTML-страницы):
"<!doctype html>
<html>
<head>
<title>Example Domain</title>
...
</html>"
Пример
Давайте явно укажем кодировку при создании обработчика.
Для этого передадим в метод ofString объект
StandardCharsets.UTF_8:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
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(StandardCharsets.UTF_8)
);
String res = response.body();
System.out.println(res.length());
}
}
Результат выполнения кода:
1256
Смотрите также
-
класс
HttpResponse.BodyHandlers,
который содержит другие обработчики тела ответа -
метод
ofFile,
который сохраняет тело ответа в файл -
метод
ofByteArray,
который преобразует тело ответа в массив байтов -
метод
send,
который отправляет HTTP-запрос и получает ответ