クラス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
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    パブリッシャのシーケンスによってパブリッシュされたリクエスト本文の連結で構成されるリクエスト本文をパブリッシュするBodyPublisherを返します。
    fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher)
    指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。
    fromPublisher(Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)
    指定されたFlow.Publisherから本文が取得されたリクエスト・ボディ・パブリッシャを返します。
    リクエスト本文を送信しないリクエスト本文パブリッシャ。
    ofByteArray(byte[] buf)
    本文が指定されたバイト配列であるリクエスト本文パブリッシャを返します。
    ofByteArray(byte[] buf, int offset, int length)
    指定されたoffsetから始まるlengthバイトの指定されたバイト配列の内容を本文として持つリクエスト本文パブリッシャを返します。
    ofByteArrays(Iterable<byte[]> iter)
    バイト配列のIterableからデータを取得するリクエスト本文パブリッシャ。
    ofFile(Path path)
    ファイルの内容からデータを取得するリクエスト本文発行者。
    ofFileChannel(FileChannel channel, long offset, long length)
    指定されたoffsetから開始して、指定されたファイルchannelから読み取られたlengthコンテンツ・バイトの本文パブリッシャを返します。
    ofInputStream(Supplier<? extends InputStream> streamSupplier)
    InputStreamからデータを読み取るリクエスト本文パブリッシャ。
    UTF_8文字セットを使用して変換された、指定された Stringの本文を持つリクエスト本体パブリッシャを返します。
    ofString(String s, Charset charset)
    指定された文字セットを使用して変換された、指定された Stringの本文を持つリクエスト・ボディ・パブリッシャを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • メソッドの詳細

    • 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
      ファイルの内容からデータを取得するリクエスト本文発行者。
      パラメータ:
      path - 本文を含むファイルへのパス
      戻り値:
      a BodyPublisher
      スロー:
      FileNotFoundException - パスが見つからない場合
    • ofFileChannel

      public static HttpRequest.BodyPublisher ofFileChannel(FileChannelチャネル、longオフセット、long length)IOExceptionをスローします
      指定されたoffsetから開始して、指定されたファイルchannelから読み取られたlengthコンテンツ・バイトの本文パブリッシャを返します。

      このメソッドと戻されたBodyPublisherは、channelの位置を変更せず、channelをクローズしません。 呼出し側は、不要になったらchannelをクローズする必要があります。

      APIのノート:
      このメソッドは、ファイルのリージョンのみをリクエスト本文として公開するか、ファイルの異なるリージョンを同時に公開するために使用できます。 一般的な使用方法は、FileChannelの単一インスタンスを作成してファイルの異なるリージョンを公開し、複数の同時HttpRequestを送信することです。それぞれが同じチャネルから作成された新しいofFileChannel BodyPublisherを、オフセットと長さで指定された異なる(通常は重複しない)バイト範囲で使用します。
      パラメータ:
      channel - ファイル・チャネル
      offset - 最初のバイトのオフセット
      length - ファイル・チャネルから読み取るバイト数
      戻り値:
      指定されたoffsetから始まる、指定されたファイルchannelから読み取られたlengthコンテンツ・バイトの本文パブリッシャ。
      スロー:
      IndexOutOfBoundsException - チャネルによって参照されるファイルのサイズと比較して、指定されたバイト範囲が範囲外であることが判明した場合
      IOException - チャネルのサイズを判別できない場合、またはchannelがクローズされている場合
      導入されたバージョン:
      26
    • 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