Class HttpResponse

java.lang.Object
com.google.api.client.http.HttpResponse

public final class HttpResponse extends 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 Details

    • content

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

      private final String contentEncoding
      Content encoding or null.
    • contentType

      private final 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.
    • response

      Low-level HTTP response.
    • statusCode

      private final int statusCode
      Status code.
    • statusMessage

      private final String statusMessage
      Status message or null.
    • request

      private final HttpRequest request
      HTTP request.
    • returnRawInputStream

      private final boolean returnRawInputStream
      Whether getContent() should return raw input stream.
    • CONTENT_ENCODING_GZIP

      private static final String CONTENT_ENCODING_GZIP
      Content encoding for GZip
      See Also:
    • CONTENT_ENCODING_XGZIP

      private static final String CONTENT_ENCODING_XGZIP
      Content encoding for GZip (legacy)
      See Also:
    • 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.
  • Constructor Details

  • Method Details

    • parseMediaType

      private static HttpMediaType parseMediaType(String contentType)
      Returns an HttpMediaType object parsed from contentType, or null if if contentType cannot be parsed or contentType is null.
    • 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
    • setLoggingEnabled

      public HttpResponse setLoggingEnabled(boolean loggingEnabled)
      Sets whether logging should be enabled on this response.

      Defaults to HttpRequest.isLoggingEnabled().

      Since:
      1.9
    • getContentEncoding

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

      public 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 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 InputStream getContent() throws 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:
      IOException - I/O exception
    • download

      public void download(OutputStream outputStream) throws 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:
      IOException - I/O exception
      Since:
      1.9
    • ignore

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

      public void disconnect() throws IOException
      Disconnect using LowLevelHttpResponse.disconnect(), then close the HTTP response content using ignore().
      Throws:
      IOException
      Since:
      1.4
    • parseAs

      public <T> T parseAs(Class<T> dataClass) throws 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:
      IOException
    • hasMessageBody

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

      public Object parseAs(Type dataType) throws 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:
      IOException
      Since:
      1.10
    • parseAsString

      public String parseAsString() throws 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:
      IOException - I/O exception
    • getContentCharset

      public 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