Class HttpClientBuilder

java.lang.Object
org.apache.hc.client5.http.impl.classic.HttpClientBuilder
Direct Known Subclasses:
CachingHttpClientBuilder

public class HttpClientBuilder extends Object
Builder for CloseableHttpClient instances.

When a particular component is not explicitly set this class will use its default implementation. System properties will be taken into account when configuring the default implementations when useSystemProperties() method is called prior to calling build().

  • http.proxyHost
  • http.proxyPort
  • https.proxyHost
  • https.proxyPort
  • http.nonProxyHosts
  • https.proxyUser
  • http.proxyUser
  • https.proxyPassword
  • http.proxyPassword
  • http.keepAlive
  • http.agent

Please note that some settings used by this class can be mutually exclusive and may not apply when building CloseableHttpClient instances.

Since:
4.3
  • Field Details

    • requestExec

      private org.apache.hc.core5.http.impl.io.HttpRequestExecutor requestExec
    • connManager

      private HttpClientConnectionManager connManager
    • connManagerShared

      private boolean connManagerShared
    • schemePortResolver

      private SchemePortResolver schemePortResolver
    • reuseStrategy

      private org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy
    • keepAliveStrategy

      private ConnectionKeepAliveStrategy keepAliveStrategy
    • targetAuthStrategy

      private AuthenticationStrategy targetAuthStrategy
    • proxyAuthStrategy

      private AuthenticationStrategy proxyAuthStrategy
    • userTokenHandler

      private UserTokenHandler userTokenHandler
    • requestInterceptors

    • responseInterceptors

    • execInterceptors

    • retryStrategy

      private HttpRequestRetryStrategy retryStrategy
    • routePlanner

      private HttpRoutePlanner routePlanner
    • redirectStrategy

      private RedirectStrategy redirectStrategy
    • connectionBackoffStrategy

      private ConnectionBackoffStrategy connectionBackoffStrategy
    • backoffManager

      private BackoffManager backoffManager
    • authSchemeRegistry

      private org.apache.hc.core5.http.config.Lookup<AuthSchemeFactory> authSchemeRegistry
    • cookieSpecRegistry

      private org.apache.hc.core5.http.config.Lookup<CookieSpecFactory> cookieSpecRegistry
    • contentDecoderMap

      private LinkedHashMap<String,InputStreamFactory> contentDecoderMap
    • cookieStore

      private CookieStore cookieStore
    • credentialsProvider

      private CredentialsProvider credentialsProvider
    • userAgent

      private String userAgent
    • proxy

      private org.apache.hc.core5.http.HttpHost proxy
    • defaultHeaders

      private Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders
    • defaultRequestConfig

      private RequestConfig defaultRequestConfig
    • evictExpiredConnections

      private boolean evictExpiredConnections
    • evictIdleConnections

      private boolean evictIdleConnections
    • maxIdleTime

      private org.apache.hc.core5.util.TimeValue maxIdleTime
    • systemProperties

      private boolean systemProperties
    • redirectHandlingDisabled

      private boolean redirectHandlingDisabled
    • automaticRetriesDisabled

      private boolean automaticRetriesDisabled
    • contentCompressionDisabled

      private boolean contentCompressionDisabled
    • cookieManagementDisabled

      private boolean cookieManagementDisabled
    • authCachingDisabled

      private boolean authCachingDisabled
    • connectionStateDisabled

      private boolean connectionStateDisabled
    • defaultUserAgentDisabled

      private boolean defaultUserAgentDisabled
    • proxySelector

      private ProxySelector proxySelector
    • closeables

      private List<Closeable> closeables
  • Constructor Details

    • HttpClientBuilder

      protected HttpClientBuilder()
  • Method Details

    • create

      public static HttpClientBuilder create()
    • setRequestExecutor

      public final HttpClientBuilder setRequestExecutor(org.apache.hc.core5.http.impl.io.HttpRequestExecutor requestExec)
      Assigns HttpRequestExecutor instance.
    • setConnectionManager

      public final HttpClientBuilder setConnectionManager(HttpClientConnectionManager connManager)
      Assigns HttpClientConnectionManager instance.
    • setConnectionManagerShared

      public final HttpClientBuilder setConnectionManagerShared(boolean shared)
      Defines the connection manager is to be shared by multiple client instances.

      If the connection manager is shared its life-cycle is expected to be managed by the caller and it will not be shut down if the client is closed.

      Parameters:
      shared - defines whether or not the connection manager can be shared by multiple clients.
      Since:
      4.4
    • setConnectionReuseStrategy

      public final HttpClientBuilder setConnectionReuseStrategy(org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy)
      Assigns ConnectionReuseStrategy instance.
    • setKeepAliveStrategy

      public final HttpClientBuilder setKeepAliveStrategy(ConnectionKeepAliveStrategy keepAliveStrategy)
      Assigns ConnectionKeepAliveStrategy instance.
    • setTargetAuthenticationStrategy

      public final HttpClientBuilder setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy)
      Assigns AuthenticationStrategy instance for target host authentication.
    • setProxyAuthenticationStrategy

      public final HttpClientBuilder setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy)
      Assigns AuthenticationStrategy instance for proxy authentication.
    • setUserTokenHandler

      public final HttpClientBuilder setUserTokenHandler(UserTokenHandler userTokenHandler)
      Assigns UserTokenHandler instance.

      Please note this value can be overridden by the disableConnectionState() method.

    • disableConnectionState

      public final HttpClientBuilder disableConnectionState()
      Disables connection state tracking.
    • setSchemePortResolver

      public final HttpClientBuilder setSchemePortResolver(SchemePortResolver schemePortResolver)
      Assigns SchemePortResolver instance.
    • setUserAgent

      public final HttpClientBuilder setUserAgent(String userAgent)
      Assigns User-Agent value.
    • setDefaultHeaders

      public final HttpClientBuilder setDefaultHeaders(Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders)
      Assigns default request header values.
    • addResponseInterceptorFirst

      public final HttpClientBuilder addResponseInterceptorFirst(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)
      Adds this protocol interceptor to the head of the protocol processing list.
    • addResponseInterceptorLast

      public final HttpClientBuilder addResponseInterceptorLast(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)
      Adds this protocol interceptor to the tail of the protocol processing list.
    • addRequestInterceptorFirst

      public final HttpClientBuilder addRequestInterceptorFirst(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)
      Adds this protocol interceptor to the head of the protocol processing list.
    • addRequestInterceptorLast

      public final HttpClientBuilder addRequestInterceptorLast(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)
      Adds this protocol interceptor to the tail of the protocol processing list.
    • addExecInterceptorBefore

      public final HttpClientBuilder addExecInterceptorBefore(String existing, String name, ExecChainHandler interceptor)
      Adds this execution interceptor before an existing interceptor.
    • addExecInterceptorAfter

      public final HttpClientBuilder addExecInterceptorAfter(String existing, String name, ExecChainHandler interceptor)
      Adds this execution interceptor after interceptor with the given name.
    • replaceExecInterceptor

      public final HttpClientBuilder replaceExecInterceptor(String existing, ExecChainHandler interceptor)
      Replace an existing interceptor with the given name with new interceptor.
    • addExecInterceptorFirst

      public final HttpClientBuilder addExecInterceptorFirst(String name, ExecChainHandler interceptor)
      Add an interceptor to the head of the processing list.
    • addExecInterceptorLast

      public final HttpClientBuilder addExecInterceptorLast(String name, ExecChainHandler interceptor)
      Add an interceptor to the tail of the processing list.
    • disableCookieManagement

      public final HttpClientBuilder disableCookieManagement()
      Disables state (cookie) management.
    • disableContentCompression

      public final HttpClientBuilder disableContentCompression()
      Disables automatic content decompression.
    • disableAuthCaching

      public final HttpClientBuilder disableAuthCaching()
      Disables authentication scheme caching.
    • setRetryStrategy

      public final HttpClientBuilder setRetryStrategy(HttpRequestRetryStrategy retryStrategy)
      Assigns HttpRequestRetryStrategy instance.

      Please note this value can be overridden by the disableAutomaticRetries() method.

    • disableAutomaticRetries

      public final HttpClientBuilder disableAutomaticRetries()
      Disables automatic request recovery and re-execution.
    • setProxy

      public final HttpClientBuilder setProxy(org.apache.hc.core5.http.HttpHost proxy)
      Assigns default proxy value.

      Please note this value can be overridden by the setRoutePlanner(org.apache.hc.client5.http.routing.HttpRoutePlanner) method.

    • setRoutePlanner

      public final HttpClientBuilder setRoutePlanner(HttpRoutePlanner routePlanner)
      Assigns HttpRoutePlanner instance.
    • setRedirectStrategy

      public final HttpClientBuilder setRedirectStrategy(RedirectStrategy redirectStrategy)
      Assigns RedirectStrategy instance.

      Please note this value can be overridden by the disableRedirectHandling() method.

      `
    • disableRedirectHandling

      public final HttpClientBuilder disableRedirectHandling()
      Disables automatic redirect handling.
    • setConnectionBackoffStrategy

      public final HttpClientBuilder setConnectionBackoffStrategy(ConnectionBackoffStrategy connectionBackoffStrategy)
      Assigns ConnectionBackoffStrategy instance.
    • setBackoffManager

      public final HttpClientBuilder setBackoffManager(BackoffManager backoffManager)
      Assigns BackoffManager instance.
    • setDefaultCookieStore

      public final HttpClientBuilder setDefaultCookieStore(CookieStore cookieStore)
      Assigns default CookieStore instance which will be used for request execution if not explicitly set in the client execution context.
    • setDefaultCredentialsProvider

      public final HttpClientBuilder setDefaultCredentialsProvider(CredentialsProvider credentialsProvider)
      Assigns default CredentialsProvider instance which will be used for request execution if not explicitly set in the client execution context.
    • setDefaultAuthSchemeRegistry

      public final HttpClientBuilder setDefaultAuthSchemeRegistry(org.apache.hc.core5.http.config.Lookup<AuthSchemeFactory> authSchemeRegistry)
      Assigns default AuthScheme registry which will be used for request execution if not explicitly set in the client execution context.
    • setDefaultCookieSpecRegistry

      public final HttpClientBuilder setDefaultCookieSpecRegistry(org.apache.hc.core5.http.config.Lookup<CookieSpecFactory> cookieSpecRegistry)
      Assigns default CookieSpec registry which will be used for request execution if not explicitly set in the client execution context.
      See Also:
    • setContentDecoderRegistry

      public final HttpClientBuilder setContentDecoderRegistry(LinkedHashMap<String,InputStreamFactory> contentDecoderMap)
      Assigns a map of InputStreamFactorys to be used for automatic content decompression.
    • setDefaultRequestConfig

      public final HttpClientBuilder setDefaultRequestConfig(RequestConfig config)
      Assigns default RequestConfig instance which will be used for request execution if not explicitly set in the client execution context.
    • useSystemProperties

      public final HttpClientBuilder useSystemProperties()
      Use system properties when creating and configuring default implementations.
    • evictExpiredConnections

      public final HttpClientBuilder evictExpiredConnections()
      Makes this instance of HttpClient proactively evict expired connections from the connection pool using a background thread.

      One MUST explicitly close HttpClient with Closeable.close() in order to stop and release the background thread.

      Please note this method has no effect if the instance of HttpClient is configured to use a shared connection manager.

      Since:
      4.4
      See Also:
    • evictIdleConnections

      public final HttpClientBuilder evictIdleConnections(org.apache.hc.core5.util.TimeValue maxIdleTime)
      Makes this instance of HttpClient proactively evict idle connections from the connection pool using a background thread.

      One MUST explicitly close HttpClient with Closeable.close() in order to stop and release the background thread.

      Please note this method has no effect if the instance of HttpClient is configured to use a shared connection manager.

      Parameters:
      maxIdleTime - maximum time persistent connections can stay idle while kept alive in the connection pool. Connections whose inactivity period exceeds this value will get closed and evicted from the pool.
      Since:
      4.4
      See Also:
    • disableDefaultUserAgent

      public final HttpClientBuilder disableDefaultUserAgent()
      Disables the default user agent set by this builder if none has been provided by the user.
      Since:
      4.5.7
    • setProxySelector

      public final HttpClientBuilder setProxySelector(ProxySelector proxySelector)
      Sets the ProxySelector that will be used to select the proxies to be used for establishing HTTP connections. If a non-null proxy selector is set, it will take precedence over the proxy settings configured in the client.
      Parameters:
      proxySelector - the ProxySelector to be used, or null to use the default system proxy selector.
      Returns:
      this HttpClientBuilder instance, to allow for method chaining.
    • customizeExecChain

      @Internal protected void customizeExecChain(org.apache.hc.core5.http.config.NamedElementChain<ExecChainHandler> execChainDefinition)
      Request exec chain customization and extension.

      For internal use.

    • addCloseable

      @Internal protected void addCloseable(Closeable closeable)
      Adds to the list of Closeable resources to be managed by the client.

      For internal use.

    • build

      public CloseableHttpClient build()