Класс HttpRequest
public abstract class HttpRequest extends Object
Экземпляр HttpRequest создаётся через HttpRequest строитель. Строитель HttpRequest получается с помощью одного из методов newBuilder. Можно установить URI запроса, его заголовки и тело. Тела запросов предоставляются через BodyPublisher, передаваемый в один из методов POST, PUT или method. После того, как все необходимые параметры установлены в строителе, метод build вернёт HttpRequest. Строители можно копировать и изменять многократно для построения нескольких взаимосвязанных запросов, которые отличаются некоторыми параметрами.
Вот пример GET-запроса, который выводит тело ответа в виде строки:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://foo.com/"))
.build();
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join(); Класс BodyPublishers предоставляет реализации многих стандартных издателей. В качестве альтернативы можно использовать собственную реализацию BodyPublisher.
- С:
- 11
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static interface |
HttpRequest.BodyPublisher |
BodyPublisher преобразует высокоуровневые Java-объекты в поток байтовых буферов, подходящих для отправки в качестве тела запроса. |
static class |
HttpRequest.BodyPublishers |
Реализации BodyPublisher, которые реализуют различные полезные издатели, такие как отправка тела запроса из строки или из файла. |
static interface |
HttpRequest.Builder |
Строитель HTTP-запросов. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт HttpRequest. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract Optional |
bodyPublisher() |
Возвращает Optional, содержащий HttpRequest.BodyPublisher, установленный в этом запросе. |
final boolean |
equals |
Проверяет этот экземпляр HTTP-запроса на равенство заданному объекту. |
abstract boolean |
expectContinue() |
Возвращает значение ожидания продолжения для этого запроса. |
final int |
hashCode() |
Вычисляет код хеша для этого экземпляра HTTP-запроса. |
abstract HttpHeaders |
headers() |
Заголовки запроса (доступные пользователю), которые будут отправлены (или отправлялись) с этим запросом. |
abstract String |
method() |
Возвращает метод запроса для этого запроса. |
static HttpRequest.Builder |
newBuilder() |
Создаёт строитель HttpRequest. |
static HttpRequest.Builder |
newBuilder |
Создаёт строитель Builder, состояние которого скопировано из существующего HttpRequest. |
static HttpRequest.Builder |
newBuilder |
Создаёт строитель HttpRequest с указанным URI. |
abstract Optional |
timeout() |
Возвращает Optional, содержащий время ожидания для этого запроса. |
abstract URI |
uri() |
Возвращает URI этого запроса. |
abstract Optional |
version() |
Возвращает Optional, содержащий версию HTTP-протокола, которая будет запрошена для этого HttpRequest. |
Подробное описание конструкторов
HttpRequest
protected HttpRequest()
Подробное описание методов
newBuilder
public static HttpRequest.Builder newBuilder(URI uri)
HttpRequest билдер с заданным URI.- Параметры:
-
uri- URI запроса - Возвращает:
- новый билдер запроса
- Исключения:
-
IllegalArgumentException- если схема URI не поддерживается.
newBuilder
public static HttpRequest.Builder newBuilder(HttpRequest request, BiPredicate<String,String> filter)
Builder , состояние которого скопировано из существующего HttpRequest. Этот билдер может быть использован для создания HttpRequest, эквивалентного исходному, при этом позволяя изменить состояние запроса перед построением — например, добавить дополнительные заголовки.
filter применяется к каждой паре имя-значение заголовка при их копировании из заданного запроса. По завершении, только те заголовки, которые удовлетворяют условию, заданному filter, будут присутствовать в Builder , возвращаемом этим методом.
- Примечание API:
- Следующие сценарии демонстрируют типичные случаи использования фильтра. Дано
HttpRequestзапрос:
- Сохранить все заголовки:
HttpRequest.newBuilder(request, (n, v) -> true) - Удалить все заголовки:
HttpRequest.newBuilder(request, (n, v) -> false) - Удалить определённый заголовок (например, Foo-Bar):
HttpRequest.newBuilder(request, (name, value) -> !name.equalsIgnoreCase("Foo-Bar"))
- Сохранить все заголовки:
- Параметры:
-
request- исходный запрос -
filter- фильтр заголовков - Возвращает:
- новый билдер запроса
- Исключения:
-
IllegalArgumentException- если новый билдер не может быть создан из данного запроса (например, если запрос содержит некорректные параметры) - C момента:
- 16
newBuilder
public static HttpRequest.Builder newBuilder()
HttpRequest билдер.- Возвращает:
- новый билдер запроса
bodyPublisher
public abstract Optional<HttpRequest.BodyPublisher> bodyPublisher()
Optional содержащий HttpRequest.BodyPublisher, установленный в этом запросе. Если BodyPublisher не был установлен в билдере запроса, то Optional пусто.- Возвращает:
OptionalсодержащийBodyPublisherэтого запроса
method
public abstract String method()
- Возвращает:
- метод этого запроса
timeout
public abstract Optional<Duration> timeout()
Optional , содержащий время ожидания этого запроса. Если время ожидания не было установлено в билдере запроса, то Optional пусто.- Возвращает:
Optionalсодержащий время ожидания этого запроса
expectContinue
public abstract boolean expectContinue()
- Возвращает:
- установку ожидания продолжения этого запроса
uri
public abstract URI uri()
URI этого запроса.- Возвращает:
- URI этого запроса
version
public abstract Optional<HttpClient.Version> version()
Optional содержащий версию HTTP-протокола, которая будет запрошена для этого HttpRequest. Если версия не была задана в билдере запроса, то Optional пуста. В этом случае запрашиваемая версия будет версией отправляемого HttpClient. Соответствующий HttpResponse должен быть запрошен для определения фактически использованной версии.- Возвращает:
- версия HTTP-протокола
headers
public abstract HttpHeaders headers()
- Возвращает:
- HttpHeaders этого запроса
equals
public final boolean equals(Object obj)
Если данный объект не является HttpRequest, то этот метод возвращает false. Два HTTP-запроса равны, если их URI, метод и поля заголовков равны.
Этот метод удовлетворяет общему контракту метода Object.equals.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
obj- объект, с которым будет сравниваться этот объект - Возвращает:
-
trueтогда и только тогда, когда данный объект являетсяHttpRequest, равным этому HTTP-запросу - См. также:
hashCode
public final int hashCode()
Хеш-код основан на URI, методе и компонентах заголовков HTTP-запроса и удовлетворяет общему контракту метода Object.hashCode.
- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хеш-кода для этого HTTP-запроса
- См. также:
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.net.http/java/net/http/HttpRequest.html