模块 java.net.http

接口 HttpRequest.BodyPublisher

所有父级接口:
Flow.Publisher<ByteBuffer>
封闭类:
HttpRequest

public static interface HttpRequest.BodyPublisher extends Flow.Publisher <ByteBuffer >
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
参见:
  • 方法总结

    修饰符和类型
    方法
    描述
    long
    返回此请求正文的内容长度。

    在接口 java.util.concurrent.Flow.Publisher 中声明的方法

    subscribe
  • 方法详情

    • contentLength

      long contentLength()
      返回此请求正文的内容长度。如果没有请求正文被发送,则可能为零,对于固定长度的内容大于零,或者对于未知的内容长度小于零。

      可以在订阅发布者之前调用此方法。 HTTP 客户端实现可能会多次调用此方法,并且每次都必须返回相同的常量值。

      返回:
      此请求正文的内容长度(如果已知)