Class HttpResponse


  • public final class HttpResponse
    extends java.lang.Object
    HTTP response.

    Callers should call disconnect() when the HTTP response object is no longer needed. However, disconnect() does not have to be called if the response stream is properly closed. Example usage:

       HttpResponse response = request.execute();
       try {
         // process the HTTP response object
       } finally {
         response.disconnect();
       }
     

    Implementation is not thread-safe.

    Since:
    1.0
    • Field Detail

      • content

        private java.io.InputStream content
        HTTP response content or null before getContent().
      • contentEncoding

        private final java.lang.String contentEncoding
        Content encoding or null.
      • contentType

        private final java.lang.String contentType
        Content type or null for none.
      • mediaType

        private final HttpMediaType mediaType
        Parsed content-type/media type or null if content-type is null.
      • statusCode

        private final int statusCode
        Status code.
      • statusMessage

        private final java.lang.String statusMessage
        Status message or null.
      • request

        private final HttpRequest request
        HTTP request.
      • contentLoggingLimit

        private int contentLoggingLimit
        Determines the limit to the content size that will be logged during getContent().

        Content will only be logged if isLoggingEnabled() is true.

        If the content size is greater than this limit then it will not be logged.

        Can be set to 0 to disable content logging. This is useful for example if content has sensitive data such as authentication information.

        Defaults to HttpRequest.getContentLoggingLimit().

      • loggingEnabled

        private boolean loggingEnabled
        Determines whether logging should be enabled on this response.

        Defaults to HttpRequest.isLoggingEnabled().

      • contentRead

        private boolean contentRead
        Signals whether the content has been read from the input stream.
    • Method Detail

      • getContentLoggingLimit

        public int getContentLoggingLimit()
        Returns the limit to the content size that will be logged during getContent().

        Content will only be logged if isLoggingEnabled() is true.

        If the content size is greater than this limit then it will not be logged.

        Can be set to 0 to disable content logging. This is useful for example if content has sensitive data such as authentication information.

        Defaults to HttpRequest.getContentLoggingLimit().

        Since:
        1.7
      • setContentLoggingLimit

        public HttpResponse setContentLoggingLimit​(int contentLoggingLimit)
        Set the limit to the content size that will be logged during getContent().

        Content will only be logged if isLoggingEnabled() is true.

        If the content size is greater than this limit then it will not be logged.

        Can be set to 0 to disable content logging. This is useful for example if content has sensitive data such as authentication information.

        Defaults to HttpRequest.getContentLoggingLimit().

        Since:
        1.7
      • isLoggingEnabled

        public boolean isLoggingEnabled()
        Returns whether logging should be enabled on this response.

        Defaults to HttpRequest.isLoggingEnabled().

        Since:
        1.9
      • getContentEncoding

        public java.lang.String getContentEncoding()
        Returns the content encoding or null for none.
        Since:
        1.5
      • getContentType

        public java.lang.String getContentType()
        Returns the content type or null for none.
        Since:
        1.5
      • getMediaType

        public HttpMediaType getMediaType()
        Returns the parsed Content-Type in form of a HttpMediaType or null if no content-type was set.
        Since:
        1.10
      • getHeaders

        public HttpHeaders getHeaders()
        Returns the HTTP response headers.
        Since:
        1.5
      • isSuccessStatusCode

        public boolean isSuccessStatusCode()
        Returns whether received a successful HTTP status code >= 200 && < 300 (see getStatusCode()).
        Since:
        1.5
      • getStatusCode

        public int getStatusCode()
        Returns the HTTP status code or 0 for none.
        Since:
        1.5
      • getStatusMessage

        public java.lang.String getStatusMessage()
        Returns the HTTP status message or null for none.
        Since:
        1.5
      • getTransport

        public HttpTransport getTransport()
        Returns the HTTP transport.
        Since:
        1.5
      • getRequest

        public HttpRequest getRequest()
        Returns the HTTP request.
        Since:
        1.5
      • getContent

        public java.io.InputStream getContent()
                                       throws java.io.IOException
        Returns the content of the HTTP response.

        The result is cached, so subsequent calls will be fast.

        Callers should call InputStream.close() after the returned InputStream is no longer needed. Example usage:

             InputStream is = response.getContent();
             try {
               // Process the input stream..
             } finally {
               is.close();
             }
         

        disconnect() does not have to be called if the content is closed.

        Returns:
        input stream content of the HTTP response or null for none
        Throws:
        java.io.IOException - I/O exception
      • download

        public void download​(java.io.OutputStream outputStream)
                      throws java.io.IOException
        Writes the content of the HTTP response into the given destination output stream.

        Sample usage:

             HttpRequest request = requestFactory.buildGetRequest(
                 new GenericUrl("https://www.google.com/images/srpr/logo3w.png"));
             OutputStream outputStream = new FileOutputStream(new File("/tmp/logo3w.png"));
             try {
               HttpResponse response = request.execute();
               response.download(outputStream);
             } finally {
               outputStream.close();
             }
            

        This method closes the content of the HTTP response from getContent().

        This method does not close the given output stream.

        Parameters:
        outputStream - destination output stream
        Throws:
        java.io.IOException - I/O exception
        Since:
        1.9
      • ignore

        public void ignore()
                    throws java.io.IOException
        Closes the content of the HTTP response from getContent(), ignoring any content.
        Throws:
        java.io.IOException
      • disconnect

        public void disconnect()
                        throws java.io.IOException
        Close the HTTP response content using ignore(), and disconnect using LowLevelHttpResponse.disconnect().
        Throws:
        java.io.IOException
        Since:
        1.4
      • parseAs

        public <T> T parseAs​(java.lang.Class<T> dataClass)
                      throws java.io.IOException
        Parses the content of the HTTP response from getContent() and reads it into a data class of key/value pairs using the parser returned by HttpRequest.getParser().

        Reference: http://tools.ietf.org/html/rfc2616#section-4.3

        Returns:
        parsed data class or null for no content
        Throws:
        java.io.IOException
      • hasMessageBody

        private boolean hasMessageBody()
                                throws java.io.IOException
        Returns whether this response contains a message body as specified in , calling ignore() if false.
        Throws:
        java.io.IOException
      • parseAs

        public java.lang.Object parseAs​(java.lang.reflect.Type dataType)
                                 throws java.io.IOException
        Parses the content of the HTTP response from getContent() and reads it into a data type of key/value pairs using the parser returned by HttpRequest.getParser().
        Returns:
        parsed data type instance or null for no content
        Throws:
        java.io.IOException
        Since:
        1.10
      • parseAsString

        public java.lang.String parseAsString()
                                       throws java.io.IOException
        Parses the content of the HTTP response from getContent() and reads it into a string.

        Since this method returns "" for no content, a simpler check for no content is to check if getContent() is null.

        All content is read from the input content stream rather than being limited by the Content-Length. For the character set, it follows the specification by parsing the "charset" parameter of the Content-Type header or by default "ISO-8859-1" if the parameter is missing.

        Returns:
        parsed string or "" for no content
        Throws:
        java.io.IOException - I/O exception
      • getContentCharset

        public java.nio.charset.Charset getContentCharset()
        Returns the Charset specified in the Content-Type of this response or the "ISO-8859-1" charset as a default.
        Since:
        1.10