public final class HttpRequest extends Object
Implementation is not thread-safe.
Modifier and Type | Field and Description |
---|---|
static String |
USER_AGENT_SUFFIX
User agent suffix for all requests.
|
static String |
VERSION
Current version of the Google API Client Library for Java.
|
Modifier and Type | Method and Description |
---|---|
void |
addParser(HttpParser parser)
Deprecated.
(scheduled to be removed in 1.14) Use
setParser(ObjectParser) instead. |
HttpResponse |
execute()
Execute the HTTP request and returns the HTTP response.
|
Future<HttpResponse> |
executeAsync()
Executes this request asynchronously using
executeAsync(Executor) in a single separate
thread using Executors.newSingleThreadExecutor() . |
Future<HttpResponse> |
executeAsync(Executor exec)
Executes this request asynchronously using
executeAsync(Executor) in a single separate
thread using the supplied Executor. |
BackOffPolicy |
getBackOffPolicy()
Returns the
BackOffPolicy to use between retry attempts or null for none. |
int |
getConnectTimeout()
Returns the timeout in milliseconds to establish a connection or
0 for an infinite
timeout. |
HttpContent |
getContent()
Returns the HTTP request content or
null for none. |
int |
getContentLoggingLimit()
Returns the limit to the content size that will be logged during
execute() . |
boolean |
getEnableGZipContent()
Returns whether to enable gzip compression of HTTP content.
|
boolean |
getFollowRedirects()
Returns whether to follow redirects automatically.
|
HttpHeaders |
getHeaders()
Returns the HTTP request headers.
|
HttpExecuteInterceptor |
getInterceptor()
Returns the HTTP request execute interceptor to intercept the start of
execute()
(before executing the HTTP request) or null for none. |
HttpMethod |
getMethod()
Deprecated.
(scheduled to be removed in 1.14) Use
getRequestMethod() instead |
int |
getNumberOfRetries()
Returns the number of retries that will be allowed to execute as the result of an
HttpUnsuccessfulResponseHandler before being terminated or 0 to not retry
requests. |
ObjectParser |
getParser()
Returns the
ObjectParser used to parse the response or null for none. |
HttpParser |
getParser(String contentType)
Deprecated.
(scheduled to be removed in 1.14) Use
getParser() instead. |
int |
getReadTimeout()
Returns the timeout in milliseconds to read data from an established connection or
0
for an infinite timeout. |
String |
getRequestMethod()
Returns the HTTP request method or
null for none. |
HttpHeaders |
getResponseHeaders()
Returns the HTTP response headers.
|
HttpResponseInterceptor |
getResponseInterceptor()
Returns the HTTP response interceptor or
null for none. |
boolean |
getRetryOnExecuteIOException()
Returns whether to retry the request if an
IOException is encountered in
LowLevelHttpRequest.execute() . |
boolean |
getSuppressUserAgentSuffix()
Returns whether to not add the suffix
USER_AGENT_SUFFIX to the User-Agent header. |
boolean |
getThrowExceptionOnExecuteError()
Returns whether to throw an exception at the end of
execute() on an HTTP error code
(non-2XX) after all retries and response handlers have been exhausted. |
HttpTransport |
getTransport()
Returns the HTTP transport.
|
HttpUnsuccessfulResponseHandler |
getUnsuccessfulResponseHandler()
Returns the HTTP unsuccessful (non-2XX) response handler or
null for none. |
GenericUrl |
getUrl()
Returns the HTTP request URL.
|
boolean |
handleRedirect(int statusCode,
HttpHeaders headers)
Sets up this request object to handle the necessary redirect if redirects are turned on, it is
a redirect status code and the header has a location.
|
boolean |
isCurlLoggingEnabled()
Returns whether logging in form of curl commands is enabled for this request.
|
boolean |
isLoggingEnabled()
Returns whether logging should be enabled for this request.
|
static String |
normalizeMediaType(String mediaType)
Deprecated.
(scheduled to be removed in 1.14) Use
HttpMediaType.equalsIgnoreParameters(HttpMediaType) instead |
HttpRequest |
setBackOffPolicy(BackOffPolicy backOffPolicy)
Sets the
BackOffPolicy to use between retry attempts or null for none. |
HttpRequest |
setConnectTimeout(int connectTimeout)
Sets the timeout in milliseconds to establish a connection or
0 for an infinite
timeout. |
HttpRequest |
setContent(HttpContent content)
Sets the HTTP request content or
null for none. |
HttpRequest |
setContentLoggingLimit(int contentLoggingLimit)
Set the limit to the content size that will be logged during
execute() . |
HttpRequest |
setCurlLoggingEnabled(boolean curlLoggingEnabled)
Sets whether logging in form of curl commands should be enabled for this request.
|
HttpRequest |
setEnableGZipContent(boolean enableGZipContent)
Returns whether to enable gzip compression of HTTP content.
|
HttpRequest |
setFollowRedirects(boolean followRedirects)
Sets whether to follow redirects automatically.
|
HttpRequest |
setHeaders(HttpHeaders headers)
Sets the HTTP request headers.
|
HttpRequest |
setInterceptor(HttpExecuteInterceptor interceptor)
Sets the HTTP request execute interceptor to intercept the start of
execute() (before
executing the HTTP request) or null for none. |
HttpRequest |
setLoggingEnabled(boolean loggingEnabled)
Sets whether logging should be enabled for this request.
|
HttpRequest |
setMethod(HttpMethod method)
Deprecated.
(scheduled to be removed in 1.14) Use
setRequestMethod(java.lang.String) instead |
HttpRequest |
setNumberOfRetries(int numRetries)
Returns the number of retries that will be allowed to execute as the result of an
HttpUnsuccessfulResponseHandler before being terminated or 0 to not retry
requests. |
HttpRequest |
setParser(ObjectParser parser)
Sets the
ObjectParser used to parse the response to this request or null for
none. |
HttpRequest |
setReadTimeout(int readTimeout)
Sets the timeout in milliseconds to read data from an established connection or
0 for
an infinite timeout. |
HttpRequest |
setRequestMethod(String requestMethod)
Sets the HTTP request method or
null for none. |
HttpRequest |
setResponseHeaders(HttpHeaders responseHeaders)
Sets the HTTP response headers.
|
HttpRequest |
setResponseInterceptor(HttpResponseInterceptor responseInterceptor)
Returns the HTTP response interceptor or
null for none. |
HttpRequest |
setRetryOnExecuteIOException(boolean retryOnExecuteIOException)
Sets whether to retry the request if an
IOException is encountered in
LowLevelHttpRequest.execute() . |
HttpRequest |
setSuppressUserAgentSuffix(boolean suppressUserAgentSuffix)
Sets whether to not add the suffix
USER_AGENT_SUFFIX to the User-Agent header. |
HttpRequest |
setThrowExceptionOnExecuteError(boolean throwExceptionOnExecuteError)
Sets whether to throw an exception at the end of
execute() on a HTTP error code
(non-2XX) after all retries and response handlers have been exhausted. |
HttpRequest |
setUnsuccessfulResponseHandler(HttpUnsuccessfulResponseHandler unsuccessfulResponseHandler)
Returns the HTTP unsuccessful (non-2XX) response handler or
null for none. |
HttpRequest |
setUrl(GenericUrl url)
Sets the HTTP request URL.
|
public static final String VERSION
public static final String USER_AGENT_SUFFIX
Includes a "(gzip)"
suffix in case the server -- as Google's servers may do -- checks
the User-Agent
header to try to detect if the client accepts gzip-encoded responses.
public HttpTransport getTransport()
@Deprecated public HttpMethod getMethod()
getRequestMethod()
insteadnull
for none or if request method is not one of the
values in HttpMethod
.@Deprecated public HttpRequest setMethod(HttpMethod method)
setRequestMethod(java.lang.String)
insteadpublic String getRequestMethod()
null
for none.public HttpRequest setRequestMethod(String requestMethod)
null
for none.public GenericUrl getUrl()
public HttpRequest setUrl(GenericUrl url)
public HttpContent getContent()
null
for none.public HttpRequest setContent(HttpContent content)
null
for none.public boolean getEnableGZipContent()
public HttpRequest setEnableGZipContent(boolean enableGZipContent)
By default it is false
.
To avoid the overhead of GZip compression for small content, one may want to set this to
true
only for HttpContent.getLength()
above a certain limit. For example:
public static class MyInterceptor implements HttpExecuteInterceptor { public void intercept(HttpRequest request) throws IOException { if (request.getContent() != null && request.getContent().getLength() >= 256) { request.setEnableGZipContent(true); } } }
public BackOffPolicy getBackOffPolicy()
BackOffPolicy
to use between retry attempts or null
for none.public HttpRequest setBackOffPolicy(BackOffPolicy backOffPolicy)
BackOffPolicy
to use between retry attempts or null
for none.public int getContentLoggingLimit()
execute()
.
If the content size is greater than this limit then it will not be logged.
Content will only be logged if isLoggingEnabled()
is true
.
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 16KB.
public HttpRequest setContentLoggingLimit(int contentLoggingLimit)
execute()
.
If the content size is greater than this limit then it will not be logged.
Content will only be logged if isLoggingEnabled()
is true
.
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 16KB.
public boolean isLoggingEnabled()
Defaults to true
.
public HttpRequest setLoggingEnabled(boolean loggingEnabled)
Defaults to true
.
public boolean isCurlLoggingEnabled()
public HttpRequest setCurlLoggingEnabled(boolean curlLoggingEnabled)
Defaults to true
.
public int getConnectTimeout()
0
for an infinite
timeout.public HttpRequest setConnectTimeout(int connectTimeout)
0
for an infinite
timeout.
By default it is 20000 (20 seconds).
public int getReadTimeout()
0
for an infinite timeout.
By default it is 20000 (20 seconds).
public HttpRequest setReadTimeout(int readTimeout)
0
for
an infinite timeout.public HttpHeaders getHeaders()
public HttpRequest setHeaders(HttpHeaders headers)
By default, this is a new unmodified instance of HttpHeaders
.
public HttpHeaders getResponseHeaders()
public HttpRequest setResponseHeaders(HttpHeaders responseHeaders)
By default, this is a new unmodified instance of HttpHeaders
.
For example, this can be used if you want to use a subclass of HttpHeaders
called
MyHeaders to process the response:
static String executeAndGetValueOfSomeCustomHeader(HttpRequest request) { MyHeaders responseHeaders = new MyHeaders(); request.responseHeaders = responseHeaders; HttpResponse response = request.execute(); return responseHeaders.someCustomHeader; }
public HttpExecuteInterceptor getInterceptor()
execute()
(before executing the HTTP request) or null
for none.public HttpRequest setInterceptor(HttpExecuteInterceptor interceptor)
execute()
(before
executing the HTTP request) or null
for none.public HttpUnsuccessfulResponseHandler getUnsuccessfulResponseHandler()
null
for none.public HttpRequest setUnsuccessfulResponseHandler(HttpUnsuccessfulResponseHandler unsuccessfulResponseHandler)
null
for none.public HttpResponseInterceptor getResponseInterceptor()
null
for none.public HttpRequest setResponseInterceptor(HttpResponseInterceptor responseInterceptor)
null
for none.public int getNumberOfRetries()
HttpUnsuccessfulResponseHandler
before being terminated or 0
to not retry
requests.public HttpRequest setNumberOfRetries(int numRetries)
HttpUnsuccessfulResponseHandler
before being terminated or 0
to not retry
requests.
The default value is 10
.
@Deprecated public void addParser(HttpParser parser)
setParser(ObjectParser)
instead.
If there is already a previous parser defined for this new parser (as defined by
getParser(String)
then the previous parser will be removed.
Any parser set by calling setParser(ObjectParser)
will be preferred over this parser.
public HttpRequest setParser(ObjectParser parser)
ObjectParser
used to parse the response to this request or null
for
none.
This parser will be preferred over any registered HttpParser.
@Deprecated public final HttpParser getParser(String contentType)
getParser()
instead.null
if
none is defined.contentType
- content type or null
for null
resultnull
for null
inputpublic final ObjectParser getParser()
ObjectParser
used to parse the response or null
for none.public boolean getFollowRedirects()
public HttpRequest setFollowRedirects(boolean followRedirects)
The default value is true
.
public boolean getThrowExceptionOnExecuteError()
execute()
on an HTTP error code
(non-2XX) after all retries and response handlers have been exhausted.public HttpRequest setThrowExceptionOnExecuteError(boolean throwExceptionOnExecuteError)
execute()
on a HTTP error code
(non-2XX) after all retries and response handlers have been exhausted.
The default value is true
.
public boolean getRetryOnExecuteIOException()
IOException
is encountered in
LowLevelHttpRequest.execute()
.public HttpRequest setRetryOnExecuteIOException(boolean retryOnExecuteIOException)
IOException
is encountered in
LowLevelHttpRequest.execute()
.
The default value is false
.
public boolean getSuppressUserAgentSuffix()
USER_AGENT_SUFFIX
to the User-Agent header.public HttpRequest setSuppressUserAgentSuffix(boolean suppressUserAgentSuffix)
USER_AGENT_SUFFIX
to the User-Agent header.
The default value is false
.
public HttpResponse execute() throws IOException
Note that regardless of the returned status code, the HTTP response content has not been parsed yet, and must be parsed by the calling code.
Almost all details of the request and response are logged if Level.CONFIG
is loggable.
The only exception is the value of the Authorization
header which is only logged if
Level.ALL
is loggable.
Callers should call HttpResponse.disconnect()
when the returned HTTP response object is
no longer needed. However, HttpResponse.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(); }
getThrowExceptionOnExecuteError()
is false
)HttpResponseException
- for an HTTP error response (only if
getThrowExceptionOnExecuteError()
is true
)IOException
HttpResponse.isSuccessStatusCode()
public Future<HttpResponse> executeAsync(Executor exec)
executeAsync(Executor)
in a single separate
thread using the supplied Executor.exec
- An executor to run the synchronous HttpRequestpublic Future<HttpResponse> executeAsync()
executeAsync(Executor)
in a single separate
thread using Executors.newSingleThreadExecutor()
.public boolean handleRedirect(int statusCode, HttpHeaders headers)
When the status code is 303
the method on the request is changed to a GET as per the
RFC2616 specification.
@Deprecated public static String normalizeMediaType(String mediaType)
HttpMediaType.equalsIgnoreParameters(HttpMediaType)
insteadtype "/" subtype"
as
specified in Media Types.mediaType
- unnormalized media type with possible parameters or null
for
null
resultnull
for null
inputCopyright © 2011-2012 Google. All Rights Reserved.