Класс HttpResponse
Класс HttpResponse из пакета java.net.http описывает
HTTP-ответ, полученный от сервера. Экземпляр этого класса
не создается напрямую - его возвращает метод send
класса HttpClient после выполнения запроса. Класс
является generic-классом: параметр T задает тип тела
ответа, который определяется выбранным обработчиком тела
BodyHandler. С помощью методов этого класса можно
получить код состояния (statusCode), тело ответа
(body), заголовки (headers), URI запроса
(uri) и версию HTTP-протокола (version).
Синтаксис
HttpResponse<T> response = client.send(request, handler);
Здесь T - тип тела ответа, client - объект
HttpClient, request - объект HttpRequest,
а handler - обработчик тела, например
BodyHandlers.ofString.
Пример
Выполним GET-запрос и выведем код состояния и тело ответа:
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.statusCode());
System.out.println(response.body());
}
}
Результат выполнения кода:
"200"
"<html>...</html>"
Пример
Получим заголовки и версию HTTP-протокола ответа:
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.version());
System.out.println(response.headers().map());
}
}
Результат выполнения кода:
"HTTP_2"
"{content-type=[text/html; charset=UTF-8]}"
Пример
Получим URI, по которому был выполнен запрос:
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.uri());
}
}
Результат выполнения кода:
"https://example.com"
Смотрите также
-
класс
HttpClient,
который отправляет HTTP-запросы -
класс
HttpRequest,
который описывает HTTP-запрос -
класс
HttpResponse.BodyHandlers,
который создает обработчики тела ответа -
класс
HttpHeaders,
который хранит заголовки запроса и ответа