Class Apache5HttpTransport

    • Field Summary

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

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

      • 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 Detail

      • 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 Detail

      • 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​(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 Apache5HttpRequest 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
        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:
        java.io.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.