Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpHtGet 232 of 322 menu
◀ ▶

Чтение тела ответа в Java

Тело ответа не появляется само: при вызове send нужно указать, как его принять. Обработчик HttpResponse.BodyHandlers.ofString читает поток байтов и собирает одну строку в кодировке UTF-8.

Строку берут из метода body уже после завершения запроса. Для проверки достаточно напечатать результат:

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.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://httpbin.org/get")) .GET() .build(); HttpResponse<String> response = client.send( request, HttpResponse.BodyHandlers.ofString(), ); String text = response.body(); System.out.println(text); } }

Один и тот же обработчик подходит для любого чтения, где ожидается текст. Бинарные форматы здесь не разбирают - строка остается сырой, как пришла по сети:

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.newBuilder().build(); 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.body().length()); } }

Выведите тело ответа для "https://httpbin.org/get?source=lab".

Отправьте чтение на "/headers" и напечатайте длину строки тела ответа.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить