- 所有超级接口:
-
Flow.Publisher<ByteBuffer>
- 封闭类:
-
HttpRequest
BodyPublisher
将高级Java对象转换为适合作为请求体发送的字节缓冲流。类BodyPublishers
提供了许多常见发布者的实现。
BodyPublisher
接口扩展了Flow.Publisher<ByteBuffer>
,这意味着BodyPublisher
充当字节缓冲的发布者。
在发送包含主体的请求时,HTTP客户端订阅请求的BodyPublisher
以接收传出请求主体数据流。 HTTP客户端实现了Flow.Subscriber
和Flow.Publisher
的正常语义,并期望从BodyPublisher
实现中获得。每个传出请求导致一个HTTP客户端Subscriber
订阅BodyPublisher
以提供包含请求主体的字节缓冲序列。由发布者发布的ByteBuffer
实例必须由发布者分配,并且在发布给HTTP客户端后不得访问。这些订阅在请求主体完全发送时正常完成,并且可以通过错误取消或提前终止。如果由于任何原因需要重新发送请求,则将创建一个新的订阅,预期生成与以前相同的数据。
报告0
的BodyPublisher
可能不会被HTTP客户端订阅,因为它实际上没有要发布的数据。
- 自 JDK 11 开始:
- 11
- 参见:
-
Method Summary
Methods declared in interface java.util.concurrent.Flow.Publisher
subscribe
-
Method Details
-
contentLength
long contentLength()返回此请求主体的内容长度。如果没有发送请求主体,则可能为零,对于固定长度内容可能大于零,对于未知内容长度可能小于零。此方法可能在发布者订阅之前调用。 HTTP客户端实现可能会多次调用此方法,并且每次都必须返回相同的常量值。
- 返回:
- 如果已知,则返回此请求主体的内容长度
-