Class ApacheHttpTransport

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private org.apache.http.client.HttpClient httpClient
      Apache HTTP client.
      private boolean isMtls
      If the HTTP client uses mTLS channel.
    • Constructor Summary

      Constructors 
      Constructor Description
      ApacheHttpTransport()
      Constructor that uses newDefaultHttpClient() for the Apache HTTP client.
      ApacheHttpTransport​(org.apache.http.client.HttpClient httpClient)
      Constructor that allows an alternative Apache HTTP client to be used.
      ApacheHttpTransport​(org.apache.http.client.HttpClient httpClient, boolean isMtls)
      Beta
      Constructor that allows an alternative Apache HTTP client to be used.
    • Field Detail

      • httpClient

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

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

      • ApacheHttpTransport

        public ApacheHttpTransport()
        Constructor that uses newDefaultHttpClient() for the Apache HTTP client.
        Since:
        1.30
      • ApacheHttpTransport

        public ApacheHttpTransport​(org.apache.http.client.HttpClient httpClient)
        Constructor that allows an alternative Apache HTTP client to be used.

        Note that in the previous version, we overrode several settings. However, we are no longer able to do so.

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

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

        @Beta
        public ApacheHttpTransport​(org.apache.http.client.HttpClient httpClient,
                                   boolean isMtls)
        Beta
        Constructor that allows an alternative Apache HTTP client to be used.

        Note that in the previous version, we overrode several settings. However, we are no longer able to do so.

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

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

      • newDefaultHttpClient

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

        Settings:

        • The client connection manager is set to PoolingHttpClientConnectionManager.
        • 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
        Since:
        1.30
      • newDefaultHttpClientBuilder

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

        Settings:

        • The client connection manager is set to PoolingHttpClientConnectionManager.
        • 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
        Since:
        1.31
      • supportsMethod

        public boolean supportsMethod​(java.lang.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 ApacheHttpRequest buildRequest​(java.lang.String method,
                                                 java.lang.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 java.io.IOException
        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:
        java.io.IOException - I/O exception
        Since:
        1.30
      • getHttpClient

        public org.apache.http.client.HttpClient getHttpClient()
        Returns the Apache HTTP client.
        Since:
        1.30
      • 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.