Interface HttpRequest.BodyProcessor

  • All Superinterfaces:
    Flow.Publisher<ByteBuffer>
    Enclosing class:
    HttpRequest


    public static interface HttpRequest.BodyProcessor
    extends Flow.Publisher<ByteBuffer>
    A processor which converts high level Java objects into flows of ByteBuffers suitable for sending as request bodies.
    Incubating Feature. Will be removed in a future release.

    BodyProcessors implement Flow.Publisher which means they act as a publisher of byte buffers.

    The HTTP client implementation subscribes to the processor in order to receive the flow of outgoing data buffers. The normal semantics of Flow.Subscriber and Flow.Publisher are implemented by the library and expected from processor implementations. Each outgoing request results in one Subscriber subscribing to the Publisher in order to provide the sequence of ByteBuffers containing the request body. ByteBuffers must be allocated by the processor, and must not be accessed after being handed over to the library. These subscriptions complete normally when the request is fully sent, and can be canceled or terminated early through error. If a request needs to be resent for any reason, then a new subscription is created which is expected to generate the same data as before.

    • Method Detail

      • fromString

        static HttpRequest.BodyProcessor fromString​(String body)
        Returns a request body processor whose body is the given String, converted using the UTF_8 character set.
        Parameters:
        body - the String containing the body
        Returns:
        a BodyProcessor
      • fromString

        static HttpRequest.BodyProcessor fromString​(String s,
                                                    Charset charset)
        Returns a request body processor whose body is the given String, converted using the given character set.
        Parameters:
        s - the String containing the body
        charset - the character set to convert the string to bytes
        Returns:
        a BodyProcessor
      • fromInputStream

        static HttpRequest.BodyProcessor fromInputStream​(Supplier<? extends InputStream> streamSupplier)
        A request body processor that reads its data from an InputStream. A Supplier of InputStream is used in case the request needs to be sent again as the content is not buffered. The Supplier may return null on subsequent attempts in which case, the request fails.
        Parameters:
        streamSupplier - a Supplier of open InputStreams
        Returns:
        a BodyProcessor
      • fromByteArray

        static HttpRequest.BodyProcessor fromByteArray​(byte[] buf)
        Returns a request body processor whose body is the given byte array.
        Parameters:
        buf - the byte array containing the body
        Returns:
        a BodyProcessor
      • fromByteArray

        static HttpRequest.BodyProcessor fromByteArray​(byte[] buf,
                                                       int offset,
                                                       int length)
        Returns a request body processor whose body is the content of the given byte array of length bytes starting from the specified offset.
        Parameters:
        buf - the byte array containing the body
        offset - the offset of the first byte
        length - the number of bytes to use
        Returns:
        a BodyProcessor
      • fromByteArrays

        static HttpRequest.BodyProcessor fromByteArrays​(Iterable<byte[]> iter)
        A request body processor that takes data from an Iterable of byte arrays. An Iterable is provided which supplies Iterator instances. Each attempt to send the request results in one invocation of the Iterable
        Parameters:
        iter - an Iterable of byte arrays
        Returns:
        a BodyProcessor
      • contentLength

        long contentLength​()
        Returns the content length for this request body. May be zero if no request content being sent, greater than zero for a fixed length content, and less than zero for an unknown content length.
        Returns:
        the content length for this request body if known