Module java.net.http
Package java.net.http

Interface HttpResponse.BodySubscriber<T>

类型参数:
T - 响应体类型
所有超级接口:
Flow.Subscriber<List<ByteBuffer>>
封闭接口:
HttpResponse<T>

public static interface HttpResponse.BodySubscriber<T> extends Flow.Subscriber<List<ByteBuffer>>
BodySubscriber消耗响应体字节并将其转换为更高级别的Java类型。类BodySubscribers提供了许多常见的body subscriber实现。

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

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

API注释:
为确保释放与相应的HTTP交换相关的所有资源,BodySubscriber的实现应确保请求更多数据,直到其中一个onCompleteonError被发出,或者取消订阅如果无法或不愿这样做。在耗尽响应体数据之前调用cancel可能会导致底层HTTP连接被关闭,并阻止其被重用于后续操作。
实现注释:
包含响应体的数据流是不可变的。具体来说,它是一系列不可修改的只读ByteBuffer列表的流。
自:
11
参见:
  • Method Details

    • getBody

      CompletionStage<T> getBody()
      返回一个CompletionStage,当完成时将返回响应体对象。此方法可以在相对于其他Flow.Subscriber方法的任何时间调用,并且使用客户端的executor调用。
      返回:
      用于响应体的CompletionStage