模块  java.net.http
软件包  java.net.http

Interface HttpResponse.BodySubscriber<T>

  • 参数类型
    T - 响应正文类型
    All Superinterfaces:
    Flow.Subscriber<List<ByteBuffer>>
    Enclosing interface:
    HttpResponse < T >

    public static interface HttpResponse.BodySubscriber<T>
    extends Flow.Subscriber<List<ByteBuffer>>
    BodySubscriber响应正文字节并将它们转换为更高级别的Java类型。 BodySubscriber提供许多共同身体订户的实现。

    该对象充当HTTP Client实现的Flow.Subscriber < List < ByteBuffer >>,它发布包含响应主体的ByteBuffers列表。 数据流以及流列表中ByteBuffers的顺序是响应主体的严格有序表示。 一旦传递给订户,Lists和ByteBuffers都不再被HTTP客户端使用。 订阅者将传入的数据缓冲区转换为某种更高级别的Java类型T

    getBody()方法返回CompletionStage < T >,它提供响应正文对象。 CompletionStage必须随时可以获得。 何时完成取决于类型T的性质。 在许多情况下,当T表示所消耗那么后整个身体CompletionStage身体已经消耗完成之后。 如果T是流类型,例如InputStream ,则它在读取正文之前完成,因为调用代码使用InputStream来使用数据。

    API Note:
    为了确保与相应HTTP交换相关联的所有资源都得到适当释放, BodySubscriber的实施应该确保50638670431919更多数据,直到onCompleteonError之一发出信号,或者cancel cancel cancel如果不能或不愿意这样做。 在耗尽响应主体数据之前调用cancel可能导致底层HTTP连接被关闭并阻止其被重用于后续操作。
    Implementation Note:
    包含响应主体的数据流是不可变的。 具体来说,它是一个只读的ByteBuffers的不可修改列表流。
    从以下版本开始:
    11
    另请参见:
    HttpResponse.BodySubscribers
    • 方法详细信息

      • getBody

        CompletionStage<T> getBody()
        返回CompletionStage ,完成后将返回响应正文对象。 此方法可以在任何时候相对于其他Flow.Subscriber方法调用,并使用客户端的executor调用。
        结果
        响应正文的CompletionStage