РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1133 of 1163 menu

Класс HttpHeaders

Класс HttpHeaders представляет собой неизменяемую (immutable) коллекцию заголовков HTTP-запроса или HTTP-ответа. Он находится в пакете java.net.http и приходит в составе объектов HttpRequest и HttpResponse. Экземпляр класса нельзя создать напрямую через конструктор - объект возвращается методами headers у запроса или ответа. Заголовки хранятся в виде отображения, где ключом является имя заголовка, а значением - список строк, так как один и тот же заголовок может встречаться несколько раз. Класс реализует интерфейс Map<String, List<String>>, поэтому для чтения значений доступны стандартные методы map: get, firstValue, allValues, containsKey, keySet и другие.

Синтаксис

HttpHeaders headers = response.headers(); headers.firstValue("Content-Type"); headers.allValues("Set-Cookie"); headers.map();

Пример

Давайте получим заголовки ответа и выведем значение заголовка Content-Type через метод firstValue. Метод возвращает Optional<String>, поэтому для получения значения используем orElse:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpHeaders; 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() ); HttpHeaders headers = response.headers(); String contentType = headers.firstValue("Content-Type") .orElse("unknown"); System.out.println(contentType); } }

Результат выполнения кода:

"text/html; charset=UTF-8"

Пример

Давайте выведем все заголовки ответа, перебрав их через метод map, который возвращает отображение имя-значения:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpHeaders; import java.util.List; import java.util.Map; 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() ); HttpHeaders headers = response.headers(); for (Map.Entry<String, List<String>> entry : headers.map().entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } }

Результат выполнения кода:

"content-type: [text/html; charset=UTF-8]" "content-length: [1256]" "date: [Mon, 01 Jan 2024 12:00:00 GMT]"

Пример

Давайте получим заголовки собственного запроса. Обратите внимание, что при добавлении заголовка через метод header у HttpRequest.Builder имя заголовка автоматически приводится к нижнему регистру:

import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpHeaders; import java.util.List; 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")) .header("X-Custom-Header", "value1") .header("X-Custom-Header", "value2") .GET() .build(); HttpHeaders headers = request.headers(); List<String> values = headers.allValues("x-custom-header"); System.out.println(values); } }

Результат выполнения кода:

[value1, value2]

Смотрите также

  • класс HttpRequest,
    который представляет HTTP-запрос
  • класс HttpResponse,
    который представляет HTTP-ответ
  • метод header,
    который добавляет заголовок в запрос
  • метод headers,
    который возвращает заголовки ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить