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