Module java.net.http
Package java.net.http

Interface 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以接收传出请求主体数据流。 HTTP客户端实现了Flow.SubscriberFlow.Publisher的正常语义,并期望从BodyPublisher实现中获得。每个传出请求导致一个HTTP客户端Subscriber订阅BodyPublisher以提供包含请求主体的字节缓冲序列。由发布者发布的ByteBuffer实例必须由发布者分配,并且在发布给HTTP客户端后不得访问。这些订阅在请求主体完全发送时正常完成,并且可以通过错误取消或提前终止。如果由于任何原因需要重新发送请求,则将创建一个新的订阅,预期生成与以前相同的数据。

报告0BodyPublisher可能不会被HTTP客户端订阅,因为它实际上没有要发布的数据。

自 JDK 11 开始:
11
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    返回此请求主体的内容长度。

    Methods declared in interface java.util.concurrent.Flow.Publisher

    subscribe
  • Method Details

    • contentLength

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

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

      返回:
      如果已知,则返回此请求主体的内容长度