Spec-Zone.ru › OpenJDK 21

Класс HttpRequest.BodyPublishers

java.lang.Object
java.net.http.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(HttpRequest.BodyPublisher... publishers)
Возвращает BodyPublisher, который публикует тело запроса, состоящее из конкатенации тел запросов, опубликованных последовательностью издателей.
static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher)
Возвращает издателя тела запроса, чье тело извлекается из заданного Flow.Publisher.
static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)
Возвращает издателя тела запроса, чье тело извлекается из заданного Flow.Publisher.
static HttpRequest.BodyPublisher noBody()
Издатель тела запроса, который не отправляет тело запроса.
static HttpRequest.BodyPublisher ofByteArray(byte[] buf)
Возвращает издателя тела запроса, чье тело — заданный массив байтов.
static HttpRequest.BodyPublisher ofByteArray(byte[] buf, int offset, int length)
Возвращает издателя тела запроса, чье тело содержит содержимое заданного массива байтов length байтов, начиная с указанного offset.
static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
Издатель тела запроса, который получает данные из Iterable массивов байтов.
static HttpRequest.BodyPublisher ofFile(Path path)
Издатель тела запроса, который получает данные из содержимого файла.
static HttpRequest.BodyPublisher ofInputStream(Supplier<? extends InputStream> streamSupplier)
Издатель тела запроса, который считывает данные из InputStream.
static HttpRequest.BodyPublisher ofString(String body)
Возвращает издателя тела запроса, чье тело — заданная строка, преобразованная с помощью набора символов UTF_8.
static HttpRequest.BodyPublisher ofString(String s, Charset charset)
Возвращает издателя тела запроса, чье тело — заданная строка, преобразованная с помощью заданного набора символов.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

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, 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.BodyPublishers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API