Class Apache5HttpTransport

java.lang.Object
com.google.api.client.http.HttpTransport
com.google.api.client.http.apache.v5.Apache5HttpTransport

public final class Apache5HttpTransport extends HttpTransport
Thread-safe HTTP transport based on the Apache HTTP Client library.

Implementation is thread-safe, as long as any parameter modification to the Apache HTTP Client is only done at initialization time. For maximum efficiency, applications should use a single globally-shared instance of the HTTP transport.

Default settings are specified in newDefaultHttpClient(). Use the Apache5HttpTransport(HttpClient) constructor to override the Apache HTTP Client used. Please read the Apache HTTP Client 5.x configuration example for more complex configuration options.

  • Field Details

    • httpClient

      private final org.apache.hc.client5.http.classic.HttpClient httpClient
      Apache HTTP client.
    • isMtls

      private final boolean isMtls
      If the HTTP client uses mTLS channel.
  • Constructor Details

    • Apache5HttpTransport

      public Apache5HttpTransport()
      Constructor that uses newDefaultHttpClient() for the Apache HTTP client.
    • Apache5HttpTransport

      public Apache5HttpTransport(org.apache.hc.client5.http.classic.HttpClient httpClient)
      Constructor that allows an alternative Apache HTTP client to be used.

      If you choose to provide your own Apache HttpClient implementation, be sure that

      • HTTP version is set to 1.1.
      • Retries are disabled (google-http-client handles retries).
      Parameters:
      httpClient - Apache HTTP client to use
    • Apache5HttpTransport

      @Beta public Apache5HttpTransport(org.apache.hc.client5.http.classic.HttpClient httpClient, boolean isMtls)
      Beta
      Constructor that allows an alternative CLoseable Apache HTTP client to be used.

      If you choose to provide your own Apache HttpClient implementation, be sure that

      • HTTP version is set to 1.1.
      • Retries are disabled (google-http-client handles retries).
      • Redirects are disabled (google-http-client handles retries).
      Parameters:
      httpClient - Apache HTTP client to use
      isMtls - If the HTTP client is mutual TLS
  • Method Details

    • newDefaultHttpClient

      public static org.apache.hc.client5.http.classic.HttpClient newDefaultHttpClient()
      Creates a new instance of the Apache HTTP client that is used by the Apache5HttpTransport() constructor.

      Settings:

      • The client connection manager is set to PoolingHttpClientConnectionManager.
      • The retry mechanism is turned off using HttpClientBuilder.disableAutomaticRetries().
      • Redirects are turned off using HttpClientBuilder.disableRedirectHandling().
      • The route planner uses SystemDefaultRoutePlanner with ProxySelector.getDefault(), which uses the proxy settings from system properties.
      Returns:
      new instance of the Apache HTTP client
    • newDefaultHttpClientBuilder

      public static org.apache.hc.client5.http.impl.classic.HttpClientBuilder newDefaultHttpClientBuilder()
      Creates a new Apache HTTP client builder that is used by the Apache5HttpTransport() constructor.

      Settings:

      • The client connection manager is set to PoolingHttpClientConnectionManager.
      • The retry mechanism is turned off using HttpClientBuilder.disableAutomaticRetries().
      • Redirects are turned off using HttpClientBuilder.disableRedirectHandling().
      • The route planner uses SystemDefaultRoutePlanner with ProxySelector.getDefault(), which uses the proxy settings from system properties.
      Returns:
      new instance of the Apache HTTP client builder
    • supportsMethod

      public boolean supportsMethod(String method)
      Description copied from class: HttpTransport
      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.

      Overrides:
      supportsMethod in class HttpTransport
      Parameters:
      method - HTTP method
    • buildRequest

      protected Apache5HttpRequest buildRequest(String method, String url)
      Description copied from class: HttpTransport
      Builds a low level HTTP request for the given HTTP method.
      Specified by:
      buildRequest in class HttpTransport
      Parameters:
      method - HTTP method
      url - URL
      Returns:
      new low level HTTP request
    • shutdown

      public void shutdown() throws IOException
      Gracefully shuts down the connection manager and releases allocated resources. This closes all connections, whether they are currently used or not.
      Overrides:
      shutdown in class HttpTransport
      Throws:
      IOException - I/O exception
    • getHttpClient

      public org.apache.hc.client5.http.classic.HttpClient getHttpClient()
      Returns the Apache HTTP client.
    • isMtls

      public boolean isMtls()
      Returns if the underlying HTTP client is mTLS.
      Overrides:
      isMtls in class HttpTransport
      Returns:
      boolean indicating if the transport is mTLS.