Class HttpTransport
- Direct Known Subclasses:
Apache5HttpTransport
,ApacheHttpTransport
,ApacheHttpTransport
,MockHttpTransport
,NetHttpTransport
Implementation is thread-safe, and subclasses must be thread-safe. For maximum efficiency, applications should use a single globally-shared instance of the HTTP transport.
The recommended concrete implementation HTTP transport library to use depends on what environment you are running in:
- Google App Engine: use
com.google.api.client.extensions.appengine.http.UrlFetchTransport
.com.google.api.client.apache.ApacheHttpTransport
doesn't work on App Engine because the Apache HTTP Client opens its own sockets (though in theory there are ways to hack it to work on App Engine that might work).com.google.api.client.javanet.NetHttpTransport
is discouraged due to a bug in the App Engine SDK itself in how it parses HTTP headers in the response.
- Android:
- For maximum backwards compatibility with older SDK's use
newCompatibleTransport
fromcom.google.api.client.extensions.android.http.AndroidHttp
(read its JavaDoc for details). - If your application is targeting Gingerbread (SDK 2.3) or higher, simply use
com.google.api.client.javanet.NetHttpTransport
.
- For maximum backwards compatibility with older SDK's use
- Other Java environments
com.google.api.client.googleapis.javanet.GoogleNetHttpTransport
is included in google-api-cient 1.22.0, so easy to include.com.google.api.client.javanet.NetHttpTransport
is based on the HttpURLConnection built into the Java SDK, so it used to be the preferred choice.com.google.api.client.apache.ApacheHttpTransport
is a good choice for users of the Apache HTTP Client, especially if you need some of the configuration options available in that library.
Some HTTP transports do not support all HTTP methods. Use supportsMethod(String)
to
check if a certain HTTP method is supported. Calling buildRequest()
on a method that is
not supported will result in an IllegalArgumentException
.
Subclasses should override supportsMethod(String)
and buildRequest(String, String)
to build requests and specify which HTTP methods are supported.
- Since:
- 1.0
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final Logger
private static final String[]
All valid request methods as specified insupportsMethod(String)
, sorted in ascending alphabetical order. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) HttpRequest
Builds a request without specifying the HTTP method.protected abstract LowLevelHttpRequest
buildRequest
(String method, String url) Builds a low level HTTP request for the given HTTP method.final HttpRequestFactory
Returns a new instance of an HTTP request factory based on this HTTP transport.final HttpRequestFactory
createRequestFactory
(HttpRequestInitializer initializer) Returns a new instance of an HTTP request factory based on this HTTP transport with the given HTTP request initializer.boolean
isMtls()
Returns whether the transport is mTLS.boolean
Returns whether the transport is shutdown or not.void
shutdown()
Default implementation does nothing, but subclasses may override to possibly release allocated system resources or close connections.boolean
supportsMethod
(String method) Returns whether a specified HTTP method is supported by this transport.
-
Field Details
-
LOGGER
-
SUPPORTED_METHODS
All valid request methods as specified insupportsMethod(String)
, sorted in ascending alphabetical order.
-
-
Constructor Details
-
HttpTransport
public HttpTransport()
-
-
Method Details
-
createRequestFactory
Returns a new instance of an HTTP request factory based on this HTTP transport.- Returns:
- new instance of an HTTP request factory
- Since:
- 1.4
-
createRequestFactory
Returns a new instance of an HTTP request factory based on this HTTP transport with the given HTTP request initializer.- Parameters:
initializer
- HTTP request initializer ornull
for none- Returns:
- new instance of an HTTP request factory
- Since:
- 1.4
-
buildRequest
HttpRequest buildRequest()Builds a request without specifying the HTTP method.- Returns:
- new HTTP request
-
supportsMethod
Returns whether a specified HTTP method is supported by this transport.Default implementation returns true if and only if the request method is
"DELETE"
,"GET"
,"POST"
, or"PUT"
. Subclasses should override.- Parameters:
method
- HTTP method- Throws:
IOException
- I/O exception- Since:
- 1.12
-
isMtls
public boolean isMtls()Returns whether the transport is mTLS.- Returns:
- boolean indicating if the transport is mTLS.
- Since:
- 1.38
-
buildRequest
Builds a low level HTTP request for the given HTTP method.- Parameters:
method
- HTTP methodurl
- URL- Returns:
- new low level HTTP request
- Throws:
IllegalArgumentException
- if HTTP method is not supportedIOException
- Since:
- 1.12
-
shutdown
Default implementation does nothing, but subclasses may override to possibly release allocated system resources or close connections.- Throws:
IOException
- I/O exception- Since:
- 1.4
-
isShutdown
public boolean isShutdown()Returns whether the transport is shutdown or not.- Returns:
- true if the transport is shutdown.
- Since:
- 1.44.0
-