モジュール java.net.http
パッケージ java.net.http

クラスHttpRequest.BodyPublishers

java.lang.Object
java.net.http.HttpRequest.BodyPublishers
含まれているクラス:
HttpRequest

public static class HttpRequest.BodyPublishers extends Object
Stringからのリクエスト本文の公開やファイルからの公開など、各種の便利なパブリッシャを実装する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
  • メソッドの詳細

    • fromPublisher

      public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher)
      指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。 返されたリクエスト本文パブリッシャのコンテンツ長は不明です。
      APIのノート:
      このメソッドは、 BodyPublisherFlow.Publisherの間のアダプタとして使用できます。この場合、パブリッシャが公開するリクエスト本文の量は不明です。
      パラメータ:
      publisher - 本文の発行責任者
      戻り値:
      a BodyPublisher
    • fromPublisher

      public static HttpRequest.BodyPublisher fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)
      指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。 返されたリクエスト本文パブリッシャは、指定されたコンテンツ長を持ちます。

      与えられたcontentLengthは正の数で、publisherが公開しなければならない正確なバイト数を表します。

      APIのノート:
      このメソッドは、 BodyPublisherFlow.Publisherの間のアダプタとして使用できます。 BodyPublisherでは、パブリッシャがパブリッシュするリクエスト本文の量がわかります。
      パラメータ:
      publisher - 本文の発行責任者
      contentLength - パブリッシャが公開する正確なバイト数を表す正の数
      戻り値:
      a BodyPublisher
      例外:
      IllegalArgumentException - コンテンツの長さが正でない場合
    • ofString

      public static HttpRequest.BodyPublisher ofString(String body)
      UTF_8文字セットを使用して変換された、指定された Stringの本文を持つリクエスト本体パブリッシャを返します。
      パラメータ:
      body - 本文を含むString
      戻り値:
      a BodyPublisher
    • ofString

      public static HttpRequest.BodyPublisher ofString(String s, Charset charset)
      指定された文字セットを使用して変換された、指定された Stringの本文を持つリクエスト・ボディ・パブリッシャを返します。
      パラメータ:
      s - 本文を含むString
      charset - 文字列をバイトに変換する文字セット
      戻り値:
      a BodyPublisher
    • ofInputStream

      public static HttpRequest.BodyPublisher ofInputStream(Supplier<? extends InputStream> streamSupplier)
      InputStreamからデータを読み取るリクエスト本文パブリッシャ。 InputStreamSupplierは、コンテンツがバッファされていないため、リクエストを繰り返す必要がある場合に使用されます。 Supplierは、その後の試行でnullを返します。この場合、リクエストは失敗します。
      パラメータ:
      streamSupplier - オープンなInputStreamのサプライヤ
      戻り値:
      a BodyPublisher
    • ofByteArray

      public static HttpRequest.BodyPublisher ofByteArray(byte[] buf)
      本文が指定されたバイト配列であるリクエスト本文パブリッシャを返します。
      パラメータ:
      buf - 本文を含むバイト配列
      戻り値:
      a BodyPublisher
    • ofByteArray

      public static HttpRequest.BodyPublisher ofByteArray(byte[] buf, int offset, int length)
      指定されたoffsetから始まるlengthバイトの指定されたバイト配列の内容を本文として持つリクエスト本文パブリッシャを返します。
      パラメータ:
      buf - 本文を含むバイト配列
      offset - 最初のバイトのオフセット
      length - 使用するバイト数
      戻り値:
      a BodyPublisher
      例外:
      IndexOutOfBoundsException - サブ範囲が範囲外として定義されている場合
    • ofFile

      public static HttpRequest.BodyPublisher ofFile(Path path) throws FileNotFoundException
      ファイルの内容からデータを取得するリクエスト本文発行者。

      BodyPublisherが作成されると、このファクトリ・メソッドでセキュリティ・マネージャの権限チェックが実行されます。 BodyPublisherが信頼できないコードと共有されないことに注意してください。

      パラメータ:
      path - 本文を含むファイルへのパス
      戻り値:
      a BodyPublisher
      例外:
      FileNotFoundException - パスが見つからない場合
      SecurityException - 「ファイルを読み取り用に開く」が拒否された場合: システム・デフォルトのファイル・システム・プロバイダで、セキュリティ・マネージャがインストールされている場合は、checkReadが起動され、指定されたファイルへの読取りアクセスがチェックされます。
    • ofByteArrays

      public static HttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
      バイト配列のIterableからデータを取得するリクエスト本文パブリッシャ。 Iteratorインスタンスを提供するIterableが提供されています。 リクエストを送信しようとするたびに、Iterableが1回呼び出されます。
      パラメータ:
      iter - バイト配列のIterable
      戻り値:
      a BodyPublisher
    • noBody

      public static HttpRequest.BodyPublisher noBody()
      リクエスト本文を送信しないリクエスト本文パブリッシャ。
      戻り値:
      すぐに完了し、リクエスト本文を送信しないBodyPublisher。
    • concat

      public static HttpRequest.BodyPublisher concat(HttpRequest.BodyPublisher... publishers)
      パブリッシャのシーケンスによってパブリッシュされたリクエスト本文の連結で構成されるリクエスト本文をパブリッシュするBodyPublisherを返します。

      シーケンスが空の場合、emptyパブリッシャが返されます。 それ以外の場合、シーケンスに単一の要素が含まれていれば、そのパブリッシャが返されます。 それ以外の場合は、「連結パブリッシャ」が返されます。

      「連結パブリッシャ」によってパブリッシュされたリクエスト本文は、各パブリッシャのすべてのバイトを順番に連結することでパブリッシュされたリクエスト本文と論理的に同等です。

      すべての本文バイトがパブリッシュされるか、エラーが発生するか、連結パブリッシャ・サブスクリプションが取り消されるまで、各パブリッシャは順番にサブスクライブされます。 連結パブリッシャは複数回サブスクライブされる場合があり、その結果、シーケンス内のパブリッシャが複数回サブスクライブされる可能性があります。

      連結パブリッシャに既知のコンテンツ長があるのは、シーケンス内のすべてのパブリッシャに既知のコンテンツ長がある場合のみです。 連結パブリッシャによってレポートされるcontentLengthは、次のように計算されます:

      • いずれかのパブリッシャが不明コンテンツの長さをレポートした場合、または既知のコンテンツの長さの合計がLong.MAX_VALUEを超える場合、結果のコンテンツの長さは「不明」になります。
      • それ以外の場合、生成されるコンテンツの長さは、既知のコンテンツの長さの合計(0からLong.MAX_VALUEまでの数値を含む)になります。

      実装上のノート:
      連結パブリッシャ・サブスクリプションが「取消済」の場合、またはバイトの公開中にエラーが発生した場合、順序内のすべてのパブリッシャがサブスクライブされるわけではありません。
      パラメータ:
      publishers - パブリッシャのシーケンス。
      戻り値:
      シーケンス内の各パブリッシャによって発行されたすべてのバイトの連結と論理的に同等のリクエスト本文を発行する集約パブリッシャ。
      導入されたバージョン:
      16