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

インタフェースHttpRequest.BodyPublisher

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

    public static interface HttpRequest.BodyPublisher
    extends Flow.Publisher<ByteBuffer>
    BodyPublisherは、上位レベルのJavaオブジェクトをリクエスト本文として送信するのに適したバイト・バッファのフローに変換します。 クラスBodyPublishersは、多くの共通パブリッシャの実装を提供します。

    BodyPublisherインタフェースはFlow.Publisher<ByteBuffer>を拡張しており、BodyPublisher「バイト・バッファ」のパブリッシャとして機能します。

    本文を含むリクエストを送信する場合、HTTPクライアントは、送信リクエスト本文データのフローを受信するためにリクエストBodyPublisherをサブスクライブします。 Flow.SubscriberおよびFlow.Publisherの通常のセマンティック・スはHTTPクライアントによって実装され、BodyPublisher実装から期待されます。 各送信リクエストは、リクエスト本文を含むバイト・バッファの順序を示すために、1つのHTTPクライアントSubscriberBodyPublisherにサブスクライブします。 パブリッシャによって公開された ByteBufferのインスタンスは、パブリッシャによって割り当てられる必要があり、HTTPクライアントにパブリッシュされた後でアクセスできないようにする必要があります。 これらのサブスクリプションは、通常、リクエスト本文が完全に送信されたときに完了し、取消しや終了をエラーによって行うことができます。 何らかの理由でリクエストを再送信する必要がある場合は、新しいサブスクリプションが作成され、これによって以前と同じデータが生成されます。

    「内容の長さ」 of 0をレポートするBodyPublisherは、パブリッシュするデータが効果的にないため、HTTPクライアントによってサブスクライブされないことがあります。

    導入されたバージョン:
    11
    関連項目:
    HttpRequest.BodyPublishers
    • メソッドの詳細

      • contentLength

        long contentLength()
        このリクエスト本文のコンテンツ長を返します。 送信されるリクエスト本文がない場合はゼロ、固定長コンテンツの場合はゼロより大きく、不明なコンテンツ長の場合はゼロより小さくできます。

        このメソッドは、パブリッシャがサブスクライブされる前に起動できます。 このメソッドは、HTTPクライアント実装によって複数回呼び出され、毎回同じ定数値を返す必要があります。

        戻り値:
        このリクエスト本文のコンテンツ長(既知の場合)