- 类型参数:
T- 响应主体类型
- 所有父级接口:
Flow.Subscriber<List<ByteBuffer>>
- 封闭接口:
HttpResponse<T>
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
- 参见:
-
方法总结
在接口 java.util.concurrent.Flow.Subscriber 中声明的方法
onComplete, onError, onNext, onSubscribe
-
方法详情
-
getBody
CompletionStage <T > getBody()- 返回:
- 响应主体的 CompletionStage
-