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)
      Sets HttpRequestExecutor instance.
      Returns:
      this instance.
    • setConnectionManager

      public final HttpClientBuilder setConnectionManager(HttpClientConnectionManager connManager)
      Returns:
      this 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.
      Returns:
      this instance.
      Since:
      4.4
    • setConnectionReuseStrategy

      public final HttpClientBuilder setConnectionReuseStrategy(org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy)
      Sets ConnectionReuseStrategy instance.
      Returns:
      this instance.
    • setKeepAliveStrategy

      public final HttpClientBuilder setKeepAliveStrategy(ConnectionKeepAliveStrategy keepAliveStrategy)
      Returns:
      this instance.
    • setTargetAuthenticationStrategy

      public final HttpClientBuilder setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy)
      Sets AuthenticationStrategy instance for target host authentication.
      Returns:
      this instance.
    • setProxyAuthenticationStrategy

      public final HttpClientBuilder setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy)
      Sets AuthenticationStrategy instance for proxy authentication.
      Returns:
      this instance.
    • setUserTokenHandler

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

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

      Returns:
      this instance.
    • disableConnectionState

      public final HttpClientBuilder disableConnectionState()
      Disables connection state tracking.
      Returns:
      this instance.
    • setSchemePortResolver

      public final HttpClientBuilder setSchemePortResolver(SchemePortResolver schemePortResolver)
      Sets SchemePortResolver instance.
      Returns:
      this instance.
    • setUserAgent

      public final HttpClientBuilder setUserAgent(String userAgent)
      Sets User-Agent value.
      Returns:
      this instance.
    • setDefaultHeaders

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

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

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

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

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

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

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

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

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

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

      public final HttpClientBuilder disableCookieManagement()
      Disables state (cookie) management.
      Returns:
      this instance.
    • disableContentCompression

      public final HttpClientBuilder disableContentCompression()
      Disables automatic content decompression.
      Returns:
      this instance.
    • disableAuthCaching

      public final HttpClientBuilder disableAuthCaching()
      Disables authentication scheme caching.
      Returns:
      this instance.
    • setRetryStrategy

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

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

      Returns:
      this instance.
    • disableAutomaticRetries

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

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

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

      Returns:
      this instance.
    • setRoutePlanner

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

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

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

      Returns:
      this instance.
    • disableRedirectHandling

      public final HttpClientBuilder disableRedirectHandling()
      Disables automatic redirect handling.
      Returns:
      this instance.
    • setConnectionBackoffStrategy

      public final HttpClientBuilder setConnectionBackoffStrategy(ConnectionBackoffStrategy connectionBackoffStrategy)
      Returns:
      this instance.
    • setBackoffManager

      public final HttpClientBuilder setBackoffManager(BackoffManager backoffManager)
      Sets BackoffManager instance.
      Returns:
      this instance.
    • setDefaultCookieStore

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

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

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

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

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

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

      public final HttpClientBuilder useSystemProperties()
      Use system properties when creating and configuring default implementations.
      Returns:
      this instance.
    • 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.

      Returns:
      this instance.
      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.
      Returns:
      this instance.
      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.
      Returns:
      this instance.
      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 instance.
    • 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.

    • getConnManager

      @Internal public HttpClientConnectionManager getConnManager()
    • contextAdaptor

      @Internal protected Function<org.apache.hc.core5.http.protocol.HttpContext, HttpClientContext> contextAdaptor()
    • build

      public CloseableHttpClient build()