- 类型参数:
-
T
- 响应体类型
- 所有超级接口:
-
Flow.Subscriber<List<ByteBuffer>>
- 封闭接口:
-
HttpResponse<T>
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
的实现应确保请求更多数据,直到其中一个onComplete
或onError
被发出,或者取消
其订阅如果无法或不愿这样做。在耗尽响应体数据之前调用cancel
可能会导致底层HTTP连接被关闭,并阻止其被重用于后续操作。 - 实现注释:
- 包含响应体的数据流是不可变的。具体来说,它是一系列不可修改的只读ByteBuffer列表的流。
- 自:
- 11
- 参见:
-
Method Summary
Methods declared in interface java.util.concurrent.Flow.Subscriber
onComplete, onError, onNext, onSubscribe
-
Method Details
-
getBody
CompletionStage<T> getBody()- 返回:
- 用于响应体的CompletionStage
-