模块 java.net.http

接口 HttpResponse.BodySubscriber<T>

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

public static interface HttpResponse.BodySubscriber<T> extends Flow.Subscriber <List <ByteBuffer >>
BodySubscriber 消耗响应主体字节并将它们转换为更高级别的 Java 类型。 BodySubscribers 类提供了许多公共主体订阅者的实现。

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

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

API 注意:
为确保与相应 HTTP 交换关联的所有资源都被正确释放, BodySubscriber 的实现应确保 request 更多数据,直到 onComplete onError 之一发出信号,或者 cancel 订阅 如果不能或不愿意这样做。在耗尽响应主体数据之前调用cancel可能会导致关闭底层 HTTP 连接并阻止它被重新用于后续操作。
实现注意事项:
包含响应主体的数据流是不可变的。具体来说,它是一个不可修改的只读字节缓冲区列表流。
自从:
11
参见:
  • 方法详情

    • getBody

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