モジュール jdk.incubator.httpclient
パッケージ jdk.incubator.http

インタフェースHttpRequest.BodyPublisher

  • すべてのスーパー・インタフェース:
    Flow.Publisher<ByteBuffer>
    含まれているクラス:
    HttpRequest

    public static interface HttpRequest.BodyPublisher
    extends Flow.Publisher<ByteBuffer>
    高水準のJavaオブジェクトをリクエスト本体として送信するのに適したバイト・バッファのフローに変換するパブリッシャ。
    インキュベーション機能。将来のリリースで削除されます。

    BodyPublisherクラスはFlow.Publisher<ByteBuffer>を実装しています。これは、BodyPublisher「バイト・バッファ」のパブリッシャとして機能することを意味します。

    HTTPクライアント実装は、発信データ・バッファのフローを受信するためにパブリッシャにサブスクライブします。 Flow.SubscriberFlow.Publisherの通常のセマンティクスはライブラリによって実装され、パブリッシャの実装から期待されます。 それぞれの発信リクエストは、リクエスト本文を含むバイト・バッファのシーケンスを提供するために、 BodyPublisherに加入する1つのSubscriberをもたらす。 パブリッシャによって発行されたByteBufferのインスタンスは、パブリッシャによって割り当てられなければならず、図書館に引き渡された後にアクセスされてはなりません。 これらのサブスクリプションは、リクエストが完全に送信されたときに正常に完了し、エラーによって早期に取消または終了することができます。 何らかの理由でリクエストを再送信する必要がある場合、以前と同じデータを生成すると予想される新しいサブスクリプションが作成されます。

    0「内容の長さ」を報告するパブリッシャは、公開するデータが事実上存在しないため、HTTPクライアント実装によってサブスクライブされないことがあります。

    • メソッドの詳細

      • fromPublisher

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

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

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

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

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

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

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

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

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

        static HttpRequest.BodyPublisher fromFile​(Path path)
                                           throws FileNotFoundException
        ファイルの内容からデータを取得するリクエスト・ボディ・パブリッシャ。
        パラメータ:
        path - 本文を含むファイルへのパス
        戻り値:
        a BodyPublisher
        例外:
        FileNotFoundException - パスが見つからない場合
        SecurityException - セキュリティ・マネージャがインストールされていて、指定されたファイルに対してread accessを拒否した場合
      • fromByteArrays

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

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

        long contentLength()
        このリクエスト本文のコンテンツ長を返します。 リクエスト本文が送信されない場合はゼロ、固定長コンテンツの場合は0より大きい、未知のコンテンツ長の場合はゼロ未満である可能性があります。 このメソッドは、パブリッシャがサブスクライブされる前に呼び出すことができます。 このメソッドは、HTTPクライアントの実装によって複数回呼び出され、毎回同じ定数値を返さなければなりません。
        戻り値:
        既知の場合は、このリクエスト本文のコンテンツの長さ