public abstract class HttpTransport extends Object
Implementation is thread-safe, and sub-classes 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:
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.
newCompatibleTransport
from com.google.api.client.extensions.android.http.AndroidHttp
(read its JavaDoc for
details).
com.google.api.client.javanet.NetHttpTransport
.
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.
Constructor and Description |
---|
HttpTransport() |
Modifier and Type | Method and Description |
---|---|
protected abstract LowLevelHttpRequest |
buildRequest(String method,
String url)
Builds a low level HTTP request for the given HTTP method.
|
HttpRequestFactory |
createRequestFactory()
Returns a new instance of an HTTP request factory based on this HTTP transport.
|
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.
|
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.
|
public final HttpRequestFactory createRequestFactory()
public final HttpRequestFactory createRequestFactory(HttpRequestInitializer initializer)
initializer
- HTTP request initializer or null
for nonepublic boolean supportsMethod(String method) throws IOException
Default implementation returns true if and only if the request method is "DELETE"
,
"GET"
, "POST"
, or "PUT"
. Subclasses should override.
method
- HTTP methodIOException
- I/O exceptionpublic boolean isMtls()
protected abstract LowLevelHttpRequest buildRequest(String method, String url) throws IOException
method
- HTTP methodurl
- URLIllegalArgumentException
- if HTTP method is not supportedIOException
public void shutdown() throws IOException
IOException
- I/O exceptionCopyright © 2011–2020 Google. All rights reserved.