Class ClientBuilder


  • public class ClientBuilder
    extends Object
    Builder for CloseableHttpClient.

    HttpClients are heavy-weight objects that manage the client-side communication infrastructure. Initialization as well as disposal of a CloseableHttpClient instance may be a rather expensive operation. It is therefore advised to construct only a small number of CloseableHttpClient instances in the application.

    • Method Detail

      • setConnectTimeout

        public ClientBuilder setConnectTimeout​(int connectTimeout)
        Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout.

        A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default).

        Default: 5000ms

        Note: Can be overridden by addDefaultRequestConfigCustomizer(java.util.function.Consumer<org.apache.http.client.config.RequestConfig.Builder>)
        Parameters:
        connectTimeout - The Connection Timeout (http.connection.timeout) – the time to establish the connection with the remote host.
        Returns:
        ClientBuilder instance
        See Also:
        RequestConfig.Builder.setConnectTimeout(int)
      • socketTimeOut

        public ClientBuilder socketTimeOut​(int socketTimeOut)
        Defines the socket timeout (SO_TIMEOUT) in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets).

        A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default).

        Default: 30000ms

        Note: Can be overridden by addDefaultRequestConfigCustomizer(java.util.function.Consumer<org.apache.http.client.config.RequestConfig.Builder>)
        Parameters:
        socketTimeOut - The Socket Timeout (http.socket.timeout) – the time waiting for data – after the connection was established; maximum time of inactivity between two data packets.
        Returns:
        ClientBuilder instance
        See Also:
        RequestConfig.Builder.setSocketTimeout(int)
      • addDefaultRequestConfigCustomizer

        public ClientBuilder addDefaultRequestConfigCustomizer​(Consumer<org.apache.http.client.config.RequestConfig.Builder> defaultRequestConfigBuilderConsumer)
        Parameters:
        defaultRequestConfigBuilderConsumer - the consumer instance which provides RequestConfig.Builder to customize default request config
        Returns:
        ClientBuilder instance
      • addDefaultPoolingHttpClientConnectionManagerCustomizer

        public ClientBuilder addDefaultPoolingHttpClientConnectionManagerCustomizer​(Consumer<org.apache.http.impl.conn.PoolingHttpClientConnectionManager> defaultPoolingHttpClientConnectionManagerCustomizerConsumer)
        Parameters:
        defaultPoolingHttpClientConnectionManagerCustomizerConsumer - the consumer instance which provides PoolingHttpClientConnectionManager to customize default connection manager
        Returns:
        ClientBuilder instance
      • addHttpClientCustomizer

        public ClientBuilder addHttpClientCustomizer​(Consumer<org.apache.http.impl.client.HttpClientBuilder> httpClientCustomizer)
        The method takes the Consumer instance which gives the HttpClientBuilder instance to customize the CloseableHttpClient before the http-request is built
        Parameters:
        httpClientCustomizer - consumer instance
        Returns:
        ClientBuilder instance
      • setMaxPoolSize

        public ClientBuilder setMaxPoolSize​(int maxPoolSize)
        Parameters:
        maxPoolSize - see documentation of HostPoolConfig.setMaxPoolSize(int)
        Returns:
        ClientBuilder instance
      • setDefaultMaxPoolSizePerRoute

        public ClientBuilder setDefaultMaxPoolSizePerRoute​(int defaultMaxPoolSizePerRoute)
        Parameters:
        defaultMaxPoolSizePerRoute - see documentation of HostPoolConfig.setDefaultMaxPoolSizePerRoute(int)
        Returns:
        ClientBuilder instance
      • setMaxPoolSizePerRoute

        public ClientBuilder setMaxPoolSizePerRoute​(org.apache.http.HttpHost httpHost,
                                                    int maxRoutePoolSize)
        Set the connection pool default max size of concurrent connections to a specific route
        Parameters:
        httpHost - httpHost
        maxRoutePoolSize - maxRoutePoolSize
        Returns:
        ClientBuilder instance
      • enableLaxRedirectStrategy

        public ClientBuilder enableLaxRedirectStrategy()
        By default, only GET requests resulting in a redirect are automatically followed. If a POST requests is answered with either HTTP 301 Moved Permanently or with 302 Found – the redirect is not automatically followed.

        If the 301 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

        By default disabled.

        Returns:
        ClientBuilder instance
        See Also:
        LaxRedirectStrategy
      • enableDefaultRedirectStrategy

        public ClientBuilder enableDefaultRedirectStrategy()
        By default, only GET requests resulting in a redirect are automatically followed. If a POST requests is answered with either HTTP 301 Moved Permanently or with 302 Found – the redirect is not automatically followed.

        If the 301 status code is received in response to a request other than GET or HEAD, the user agent MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might change the conditions under which the request was issued.

        By default disabled.

        Returns:
        ClientBuilder instance
        See Also:
        DefaultRedirectStrategy
      • redirectStrategy

        public ClientBuilder redirectStrategy​(org.apache.http.client.RedirectStrategy redirectStrategy)

        By default disabled.

        Parameters:
        redirectStrategy - RedirectStrategy instance
        Returns:
        ClientBuilder instance
        See Also:
        RedirectStrategy
      • addDefaultHeader

        public ClientBuilder addDefaultHeader​(String name,
                                              String value)
        Header needs to be the same for all requests which go through the built CloseableHttpClient
        Parameters:
        name - name of header. Can't be null
        value - value of header
        Returns:
        ClientBuilder instance
      • addDefaultHeader

        public ClientBuilder addDefaultHeader​(org.apache.http.Header header)
        Header needs to be the same for all requests which go through the built CloseableHttpClient
        Parameters:
        header - header instance. Can't be null
        Returns:
        ClientBuilder instance
      • addDefaultHeaders

        public ClientBuilder addDefaultHeaders​(org.apache.http.Header... headers)
        Headers need to be the same for all requests which go through the built CloseableHttpClient
        Parameters:
        headers - varargs of headers. Can't be null
        Returns:
        ClientBuilder instance
      • addDefaultHeaders

        public ClientBuilder addDefaultHeaders​(Collection<? extends org.apache.http.Header> headers)
        Headers need to be the same for all requests which go through the built CloseableHttpClient
        Parameters:
        headers - collections of headers
        Returns:
        ClientBuilder instance
      • addContentType

        public ClientBuilder addContentType​(org.apache.http.entity.ContentType contentType)
        Sets content type to header
        Parameters:
        contentType - content type of request header
        Returns:
        ClientBuilder instance
      • proxy

        public ClientBuilder proxy​(org.apache.http.HttpHost proxy)
        Added proxy host. By default is null. If has proxy instance method useDefaultProxy() will be ignored
        Parameters:
        proxy - HttpHost instance to proxy
        Returns:
        ClientBuilder instance
      • proxy

        public ClientBuilder proxy​(URI proxyUri)
        Added proxy by proxyUri. By default is null. If has proxy instance method useDefaultProxy() will be ignored.
        Parameters:
        proxyUri - URI instance to proxy
        Returns:
        ClientBuilder instance
      • proxy

        public ClientBuilder proxy​(String host,
                                   int port)
        Parameters:
        host - host of proxy
        port - port of proxy
        Returns:
        ClientBuilder instance
      • useDefaultProxy

        public ClientBuilder useDefaultProxy()
        Instruct HttpClient to use the standard JRE proxy selector to obtain proxy.
        Returns:
        ClientBuilder instance
      • sslContext

        public ClientBuilder sslContext​(SSLContext sslContext)
        Parameters:
        sslContext - SSLContext instance
        Returns:
        ClientBuilder instance
      • trustAllHosts

        public ClientBuilder trustAllHosts()
        Accept all hosts
        Returns:
        ClientBuilder instance
      • enableCookieManagement

        public ClientBuilder enableCookieManagement()
        By default, the HttpClientBuilder.disableCookieManagement() called. This method will prevent the call.
        Returns:
        ClientBuilder instance
      • enableAutomaticRetries

        public ClientBuilder enableAutomaticRetries()
        By default, the HttpClientBuilder.disableAutomaticRetries() called. This method will prevent the call.
        Returns:
        ClientBuilder instance
      • build

        public org.apache.http.impl.client.CloseableHttpClient build()
        Build CloseableHttpClient
        Returns:
        CloseableHttpClient instance by build parameters