Class HttpResponse<T>

  • Type Parameters:
    T - the response body type


    public abstract class HttpResponse<T>
    extends Object
    Represents a response to a HttpRequest.
    Incubating Feature. Will be removed in a future release.

    A HttpResponse is available when the response status code and headers have been received, and typically after the response body has also been received. This depends on the response body handler provided when sending the request. In all cases, the response body handler is invoked before the body is read. This gives applications an opportunity to decide how to handle the body.

    Methods are provided in this class for accessing the response headers, and response body.

    Response handlers and processors

    Response bodies are handled at two levels. Application code supplies a response handler (HttpResponse.BodyHandler) which may examine the response status code and headers, and which then returns a HttpResponse.BodyProcessor to actually read (or discard) the body and convert it into some useful Java object type. The handler can return one of the pre-defined processor types, or a custom processor, or if the body is to be discarded, it can call BodyProcessor.discard() and return a processor which discards the response body. Static implementations of both handlers and processors are provided in BodyHandler and BodyProcessor respectively. In all cases, the handler functions provided are convenience implementations which ignore the supplied status code and headers and return the relevant pre-defined BodyProcessor.

    See HttpResponse.BodyHandler for example usage.

    Since:
    9
    • Constructor Detail

      • HttpResponse

        protected HttpResponse​()
        Creates an HttpResponse.
    • Method Detail

      • statusCode

        public abstract int statusCode​()
        Returns the status code for this response.
        Returns:
        the response code
      • request

        public abstract HttpRequest request​()
        Returns the initial HttpRequest that initiated the exchange.
        Returns:
        the request
      • finalRequest

        public abstract HttpRequest finalRequest​()
        Returns the final HttpRequest that was sent on the wire for the exchange ( may, or may not, be the same as the initial request ).
        Returns:
        the request
      • headers

        public abstract HttpHeaders headers​()
        Returns the received response headers.
        Returns:
        the response headers
      • trailers

        public abstract CompletableFuture<HttpHeaders> trailers​()
        Returns the received response trailers, if there are any, when they become available. For many response processor types this will be at the same time as the HttpResponse itself is available. In such cases, the returned CompletableFuture will be already completed.
        Returns:
        a CompletableFuture of the response trailers (may be empty)
      • body

        public abstract T body​()
        Returns the body. Depending on the type of T, the returned body may represent the body after it was read (such as byte[], or String, or Path) or it may represent an object with which the body is read, such as an InputStream.
        Returns:
        the body
      • sslParameters

        public abstract SSLParameters sslParameters​()
        Returns the SSLParameters in effect for this response. Returns null if this is not a HTTPS response.
        Returns:
        the SSLParameters associated with the response
      • uri

        public abstract URI uri​()
        Returns the URI that the response was received from. This may be different from the request URI if redirection occurred.
        Returns:
        the URI of the response
      • version

        public abstract HttpClient.Version version​()
        Returns the HTTP protocol version that was used for this response.
        Returns:
        HTTP protocol version