Класс HttpRequest.BodyPublishers
- Вложенный класс:
- HttpRequest
public static class HttpRequest.BodyPublishers extends Object
BodyPublisher, которые реализуют различные полезные издатели, такие как публикация тела запроса из строки или из файла. Ниже приведены примеры использования предопределенных издателей тела для преобразования общих высокоуровневых объектов Java в поток данных, подходящий для отправки в качестве тела запроса:
// Request body from a String
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://foo.com/"))
.header("Content-Type", "text/plain; charset=UTF-8")
.POST(BodyPublishers.ofString("some body text"))
.build();
// Request body from a File
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://foo.com/"))
.header("Content-Type", "application/json")
.POST(BodyPublishers.ofFile(Paths.get("file.json")))
.build();
// Request body from a byte array
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://foo.com/"))
.POST(BodyPublishers.ofByteArray(new byte[] { ... }))
.build();
- С момента:
- 11
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static HttpRequest.BodyPublisher |
concat |
Возвращает BodyPublisher, который публикует тело запроса, состоящее из конкатенации тел запросов, опубликованных последовательностью издателей. |
static HttpRequest.BodyPublisher |
fromPublisher |
Возвращает издателя тела запроса, чье тело извлекается из данного Flow.Publisher. |
static HttpRequest.BodyPublisher |
fromPublisher |
Возвращает издателя тела запроса, чье тело извлекается из данного Flow.Publisher. |
static HttpRequest.BodyPublisher |
noBody() |
Издатель тела запроса, который не отправляет тело запроса. |
static HttpRequest.BodyPublisher |
ofByteArray |
Возвращает издателя тела запроса, чье тело — заданный массив байтов. |
static HttpRequest.BodyPublisher |
ofByteArray |
Возвращает издателя тела запроса, чье тело — содержимое заданного массива байтов, length байтов, начиная с указанного offset. |
static HttpRequest.BodyPublisher |
ofByteArrays |
Издатель тела запроса, который берет данные из Iterable массивов байтов. |
static HttpRequest.BodyPublisher |
ofFile |
Издатель тела запроса, который берет данные из содержимого файла. |
static HttpRequest.BodyPublisher |
ofInputStream |
Издатель тела запроса, который считывает свои данные из InputStream. |
static HttpRequest.BodyPublisher |
ofString |
Возвращает издателя тела запроса, чье тело — заданная строка, преобразованная с использованием набора символов UTF_8. |
static HttpRequest.BodyPublisher |
ofString |
Возвращает издателя тела запроса, чье тело — заданная строка, преобразованная с использованием заданного набора символов. |
Подробное описание методов
fromPublisher
public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher)
Flow.Publisher. Возвращаемый издатель тела запроса имеет неизвестную длину содержимого.- Прим. для API:
- Этот метод может использоваться в качестве адаптера между
BodyPublisherиFlow.Publisher, где количество тела запроса, которое опубликует издатель, неизвестно. - Параметры:
-
publisher- издатель, ответственный за публикацию тела - Возвращает:
- BodyPublisher
fromPublisher
public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)
Flow.Publisher. Возвращаемый издатель тела запроса имеет заданную длину содержимого. Заданная contentLength — положительное число, представляющее точное количество байтов, которые publisher должен опубликовать.
- Прим. для API:
- Этот метод может использоваться в качестве адаптера между
BodyPublisherиFlow.Publisher, где количество тела запроса, которое опубликует издатель, известно. - Параметры:
-
publisher- издатель, ответственный за публикацию тела -
contentLength- положительное число, представляющее точное количество байтов, которые издатель опубликует - Возвращает:
- BodyPublisher
- Исключения:
-
IllegalArgumentException- если длина содержимого не положительна
ofString
public static HttpRequest.BodyPublisher ofString(String body)
String, преобразованная с использованием набора символов UTF_8.- Параметры:
-
body- строка, содержащая тело - Возвращает:
- BodyPublisher
ofString
public static HttpRequest.BodyPublisher ofString(String s, Charset charset)
String, преобразованная с использованием заданного набора символов.- Параметры:
-
s- строка, содержащая тело -
charset- набор символов для преобразования строки в байты - Возвращает:
- BodyPublisher
ofInputStream
public static HttpRequest.BodyPublisher ofInputStream(Supplier<? extends InputStream> streamSupplier)
InputStream. Для случая, если запрос нужно повторить, используется Supplier объекта InputStream, так как содержимое не буферизуется. Supplier может возвращать null при последующих попытках, в этом случае запрос терпит неудачу.- Параметры:
-
streamSupplier- поставщик открытых потоков InputStream - Возвращает:
- BodyPublisher
ofByteArray
public static HttpRequest.BodyPublisher ofByteArray(byte[] buf)
- Параметры:
-
buf- массив байтов, содержащий тело - Возвращает:
- BodyPublisher
ofByteArray
public static HttpRequest.BodyPublisher ofByteArray(byte[] buf, int offset, int length)
length байтов, начиная с указанного offset. - Параметры:
-
buf- массив байтов, содержащий тело -
offset- смещение первого байта -
length- количество байтов для использования - Возвращает:
- BodyPublisher
- Исключения:
-
IndexOutOfBoundsException- если поддиапазон выходит за пределы границ
ofFile
public static HttpRequest.BodyPublisher ofFile(Path path) throws FileNotFoundException
Проверки разрешений менеджера безопасности выполняются в этом методе-фабрике при создании BodyPublisher. Необходимо следить, чтобы BodyPublisher не был предоставлен небезопасному коду.
- Параметры:
-
path- путь к файлу, содержащему тело - Возвращает:
- BodyPublisher
- Исключения:
-
FileNotFoundException- если файл не найден -
SecurityException- если доступ к чтению файла запрещен при открытии: в случае системного поставщика файловой системы и установленного менеджера безопасности вызываетсяcheckReadдля проверки доступа к чтению данного файла
ofByteArrays
public static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
Iterable массивов байтов. Предоставляется Iterable, который предоставляет экземпляры Iterator. Каждая попытка отправить запрос приводит к одному вызову Iterable.- Параметры:
-
iter- Iterable массивов байтов - Возвращает:
- BodyPublisher
noBody
public static HttpRequest.BodyPublisher noBody()
- Возвращает:
- BodyPublisher, который завершается немедленно и не отправляет тело запроса.
concat
public static HttpRequest.BodyPublisher concat(HttpRequest.BodyPublisher... publishers)
BodyPublisher, который публикует тело запроса, состоящее из конкатенации тел запросов, опубликованных последовательностью издателей. Если последовательность пуста, возвращается пустой издатель. В противном случае, если последовательность содержит один элемент, возвращается этот издатель. В противном случае возвращается издатель конкатенации.
Тело запроса, опубликованное издателем конкатенации, логически эквивалентно телу запроса, которое было бы опубликовано путем конкатенации всех байтов каждого издателя в последовательности.
К каждому издателю подписываются по очереди лениво, пока не будут опубликованы все байты тела, не произойдет ошибка или не будет отменено подписка на издателя конкатенации. К издателю конкатенации можно подписаться более чем один раз, что может привести к тому, что издатели в последовательности будут подписаны более чем один раз.
Издатель конкатенации имеет известную длину содержимого только если все издатели в последовательности имеют известную длину содержимого. Длина содержимого, отчётливая у издателя конкатенации, вычисляется следующим образом:
- Если любой из издателей сообщает неизвестную длину содержимого или если сумма известных длин содержимого превысит
Long.MAX_VALUE, результирующая длина содержимого является неизвестной. - В противном случае результирующая длина содержимого — сумма известных длин содержимого, число между
0иLong.MAX_VALUE, включительно.
- Прим. реализации:
- Если подписка на издателя конкатенации отменяется или возникает ошибка при публикации байтов, не все издатели в последовательности могут быть подписаны.
- Параметры:
-
publishers- последовательность издателей. - Возвращает:
- Агрегатор издателей, который публикует тело запроса, логически эквивалентное конкатенации всех байтов, опубликованных каждым издателем в последовательности.
- С:
- 16
© 1993, 2021, 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/17/docs/api/java.net.http/java/net/http/HttpRequest.BodyPublishers.html