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

インタフェースHttpResponse.BodySubscriber<T>

  • 型パラメータ:
    T - レスポンス本文型
    すべてのスーパー・インタフェース:
    Flow.Subscriber<List<ByteBuffer>>
    含まれているクラス:
    HttpResponse < T>

    public static interface HttpResponse.BodySubscriber<T>
    extends Flow.Subscriber<List<ByteBuffer>>
    レスポンス主体のサブスクライバ。
    インキュベーション機能。将来のリリースで削除されます。

    このオブジェクトは、HTTPクライアントの実装に対してFlow.Subscriber<List<ByteBuffer>>として動作し、レスポンス本文を含むByteBuffersの変更不可能なリストを公開します。 フロー・リスト内のByteBuffersの順序と同様に、データのフローは、レスポンス本文の厳密に順序付けられた表現です。 いったんサブスクライバに渡されたリストとByteBuffersは、HTTPクライアントによって使用されなくなりました。 サブスクライバは、受信したデータのバッファをユーザー定義のオブジェクト型Tに変換します。

    getBody()メソッドは、レスポンス本文オブジェクトを提供するCompletionStage <T>を返します。 CompletionStageはいつでも入手可能でなければなりません。 完了すると、型Tの性質に依存します。 多くの場合、Tが読み込まれた後に本文全体を表すとき、本文が読み込まれた後で完了します。 TInputStreamのようなストリーミング型の場合、本文が読み込まれる前に完了します。なぜなら、呼び出しコードがデータを消費するためです。

    APIの注:
    対応する交換に関連付けられたすべてのリソースが確実に解放されるように、BodySubscriberの実装は、onCompleteまたはonErrorが通知されるまでrequestのデータを確実に保持する必要があります。 データを使い切る前にcancelを呼び出すと、基になるHTTP接続が閉じられ、後続の操作で再利用されなくなる可能性があります。
    • メソッドの詳細

      • getBody

        CompletionStage<T> getBody()
        終了時にレスポンス本文オブジェクトを返すCompletionStageを返します。
        戻り値:
        レスポンス本文のCompletionStage
      • fromSubscriber

        static <S extends Flow.Subscriber<? super List<ByteBuffer>>> HttpResponse.BodySubscriber<Void> fromSubscriber​(S subscriber)
        すべてのレスポンス本文を指定されたFlow.Subscriberに転送する本文サブスクライバを返します。 返された本文サブスクライバのgetBody()完了ステージ} は、指定されたサブスクライバonCompleteまたはonErrorの1つが呼び出された後に完了します。
        APIの注:
        このメソッドは、 BodySubscriberFlow.Subscriberの間のアダプタとして使用できます。
        型パラメータ:
        S - サブスクライバのタイプ
        パラメータ:
        subscriber - サブスクライバ
        戻り値:
        本文サブスクライバ
      • fromSubscriber

        static <S extends Flow.Subscriber<? super List<ByteBuffer>>,T> HttpResponse.BodySubscriber<T> fromSubscriber​(S subscriber,
                                                                                                                     Function<S,T> finisher)
        すべてのレスポンス本文を指定されたFlow.Subscriberに転送する本文サブスクライバを返します。 返された本文サブスクライバのgetBody()完了ステージ} は、指定されたサブスクライバonCompleteまたはonErrorの1つが呼び出された後に完了します。

        指定されたfinisher関数は、指定されたサブスクライバonCompleteが呼び出された後に適用されます。 finisher関数は、指定されたサブスクライバとともに起動され、レスポンス本文として設定された値を返します。

        APIの注:
        このメソッドは、 BodySubscriberFlow.Subscriberの間のアダプタとして使用できます。
        型パラメータ:
        S - サブスクライバのタイプ
        T - レスポンス本文のタイプ
        パラメータ:
        subscriber - サブスクライバ
        finisher - サブスクライバが完了した後に適用される機能
        戻り値:
        本文サブスクライバ
      • asString

        static HttpResponse.BodySubscriber<String> asString​(Charset charset)
        指定されたCharsetを使用して変換された Stringとしてレスポンス本文を格納する本文サブスクライバを返します。

        このサブスクライバを使用するHttpResponseは、レスポンス全体を読み取った後に使用できます。

        パラメータ:
        charset - 文字列を変換する文字セット
        戻り値:
        本文サブスクライバ
      • asByteArray

        static HttpResponse.BodySubscriber<byte[]> asByteArray()
        レスポンス本文をバイト配列として格納するBodySubscriberを返します。

        このサブスクライバを使用するHttpResponseは、レスポンス全体を読み取った後に使用できます。

        戻り値:
        本文サブスクライバ
      • asFile

        static HttpResponse.BodySubscriber<Path> asFile​(Path file,
                                                        OpenOption... openOptions)
        与えられたオプションと名前でオープンされたファイルにレスポンス本文を格納するBodySubscriberを返します。 ファイルは、本文が読み込まれる直前にFileChannel.openを使用して、指定されたオプションで開かれます。 スローされた例外は、必要に応じてHttpClient::sendまたはHttpClient::sendAsyncから返されるか、スローされます。

        このサブスクライバを使用するHttpResponseは、レスポンス全体を読み取った後に使用できます。

        パラメータ:
        file - 本文を格納するファイル
        openOptions - ファイルを開くためのオプションのリスト
        戻り値:
        本文サブスクライバ
        例外:
        SecurityException - セキュリティ・マネージャがインストールされていて、ファイルにwrite accessが拒否されている場合。 DELETE_ON_CLOSEオプションでファイルが開かれた場合は、checkDeleteメソッドが呼び出されて削除アクセスがチェックされます。
      • asFile

        static HttpResponse.BodySubscriber<Path> asFile​(Path file)
        指定された名前でオープンされたファイルにレスポンス本文を格納するBodySubscriberを返します。 標準オープン・オプションCREATEWRITEasFileを呼び出すのと同じ効果があります

        このサブスクライバを使用するHttpResponseは、レスポンス全体を読み取った後に使用できます。

        パラメータ:
        file - 本文を格納するファイル
        戻り値:
        本文サブスクライバ
        例外:
        SecurityException - セキュリティ・マネージャがインストールされていて、ファイルへのwrite accessを拒否した場合
      • asByteArrayConsumer

        static HttpResponse.BodySubscriber<Void> asByteArrayConsumer​(Consumer<Optional<byte[]>> consumer)
        提供されたOptional<byte[]>のコンシューマに着信する本文データを提供するBodySubscriberを返します。 Optionalが空の場合、Consumer.accept()の各呼び出しには、空のOptionalが含まれます。ただし、すべての本文データが読み込まれた後の最終呼び出しを除きます。

        このサブスクライバを使用するHttpResponseは、レスポンス全体を読み取った後に使用できます。

        パラメータ:
        consumer - バイト配列のコンシューマ
        戻り値:
        a BodySubscriber
      • asInputStream

        static HttpResponse.BodySubscriber<InputStream> asInputStream()
        レスポンス本文をInputStreamとしてストリームするBodySubscriberを返します。

        このサブスクライバを使用するHttpResponseは、レスポンス・ヘッダーが読み込まれた直後に利用でき、本文全体が処理されるまで待つ必要はありません。 レスポンス本文は、InputStreamから直接読み取ることができます。

        APIの注:
        対応するチェンジに関連付けられたすべてのリソースが適切に解放されるようにするには、呼び出し側はEOFに達するまですべてのバイトを読み取るか、InputStream.close()を呼び出すことができない場合は呼び出します。 ストリームを使い切る前にcloseを呼び出すと、基になるHTTP接続が閉じられ、後続の操作で再利用されなくなる可能性があります。
        戻り値:
        レスポンス本文をInputStreamとしてストリームする本文 サブスクライバ。
      • discard

        static <U> HttpResponse.BodySubscriber<U> discard​(U value)
        レスポンス本文を破棄するレスポンス・サブスクライバを返します。 指定された値は、HttpResponse.body()から返される値です。
        型パラメータ:
        U - レスポンス本文の型
        パラメータ:
        value - HttpResponse.body()から返される値は、null
        戻り値:
        a BodySubscriber
      • buffering

        static <T> HttpResponse.BodySubscriber<T> buffering​(HttpResponse.BodySubscriber<T> downstream,
                                                            int bufferSize)
        特定のダウンストリーム・サブスクライバにデータを配信する前にデータをバッファリングするBodySubscriberを返します。 サブスクライバは、onCompleteが呼び出される直前に、最後の呼び出しを除いて、buffersizeバイトのデータをダウンストリームonNextメソッドの各呼び出しに渡すことを保証します。 onNextの最後の呼び出しには、buffersizeバイトより少ないバイト数が含まれている可能性があります。

        返されたサブスクライバは、getBody()メソッドをダウンストリーム・サブスクライバに委譲します。

        パラメータ:
        downstream - ダウンストリーム・サブスクライバ
        bufferSize - バッファ・サイズ
        戻り値:
        バッファリング・ボディ・サブスクライバ
        例外:
        IllegalArgumentException - bufferSize <= 0の場合