Class HttpAsyncClientBuilder

java.lang.Object
org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder
Direct Known Subclasses:
CachingHttpAsyncClientBuilder

public class HttpAsyncClientBuilder extends Object
Builder for CloseableHttpAsyncClient instances that can negotiate the most optimal HTTP protocol version during the TLS handshake with ALPN extension if supported by the Java runtime.

Concurrent message exchanges executed by CloseableHttpAsyncClient instances created with this builder will get automatically assigned to separate connections leased from the connection pool.

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
  • http.keepAlive
  • http.agent

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

Since:
5.0
  • Field Details

    • tlsConfig

      @Deprecated private TlsConfig tlsConfig
      Deprecated.
      TLS should be configured by the connection manager
    • connManager

      private AsyncClientConnectionManager connManager
    • connManagerShared

      private boolean connManagerShared
    • ioReactorConfig

      private org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig
    • ioSessionListener

      private org.apache.hc.core5.reactor.IOSessionListener ioSessionListener
    • ioReactorExceptionCallback

      private org.apache.hc.core5.function.Callback<Exception> ioReactorExceptionCallback
    • h1Config

      private org.apache.hc.core5.http.config.Http1Config h1Config
    • h2Config

      private org.apache.hc.core5.http2.config.H2Config h2Config
    • charCodingConfig

      private org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig
    • schemePortResolver

      private SchemePortResolver schemePortResolver
    • keepAliveStrategy

      private ConnectionKeepAliveStrategy keepAliveStrategy
    • userTokenHandler

      private UserTokenHandler userTokenHandler
    • targetAuthStrategy

      private AuthenticationStrategy targetAuthStrategy
    • proxyAuthStrategy

      private AuthenticationStrategy proxyAuthStrategy
    • ioSessionDecorator

      private org.apache.hc.core5.function.Decorator<org.apache.hc.core5.reactor.IOSession> ioSessionDecorator
    • requestInterceptors

    • responseInterceptors

    • execInterceptors

    • routePlanner

      private HttpRoutePlanner routePlanner
    • redirectStrategy

      private RedirectStrategy redirectStrategy
    • retryStrategy

      private HttpRequestRetryStrategy retryStrategy
    • reuseStrategy

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

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

      private org.apache.hc.core5.http.config.Lookup<CookieSpecFactory> cookieSpecRegistry
    • 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
    • automaticRetriesDisabled

      private boolean automaticRetriesDisabled
    • redirectHandlingDisabled

      private boolean redirectHandlingDisabled
    • cookieManagementDisabled

      private boolean cookieManagementDisabled
    • authCachingDisabled

      private boolean authCachingDisabled
    • connectionStateDisabled

      private boolean connectionStateDisabled
    • threadFactory

      private ThreadFactory threadFactory
    • closeables

      private List<Closeable> closeables
    • proxySelector

      private ProxySelector proxySelector
    • earlyHintsListener

      private EarlyHintsListener earlyHintsListener
    • priorityHeaderDisabled

      private boolean priorityHeaderDisabled
    • contentDecoderMap

      private LinkedHashMap<String, UnaryOperator<org.apache.hc.core5.http.nio.AsyncDataConsumer>> contentDecoderMap
      Maps Content-Encoding tokens to decoder factories in insertion order.
    • contentCompressionDisabled

      private boolean contentCompressionDisabled
      When true the client skips all transparent response decompression.
  • Constructor Details

    • HttpAsyncClientBuilder

      protected HttpAsyncClientBuilder()
  • Method Details

    • create

      public static HttpAsyncClientBuilder create()
    • setVersionPolicy

      @Deprecated public final HttpAsyncClientBuilder setVersionPolicy(org.apache.hc.core5.http2.HttpVersionPolicy versionPolicy)
      Deprecated.
      Use TlsConfig and connection manager methods
      Sets HTTP protocol version policy.
      Returns:
      this instance.
    • setHttp1Config

      public final HttpAsyncClientBuilder setHttp1Config(org.apache.hc.core5.http.config.Http1Config h1Config)
      Sets Http1Config configuration.
      Returns:
      this instance.
    • setH2Config

      public final HttpAsyncClientBuilder setH2Config(org.apache.hc.core5.http2.config.H2Config h2Config)
      Sets H2Config configuration.
      Returns:
      this instance.
    • setConnectionManager

      public final HttpAsyncClientBuilder setConnectionManager(AsyncClientConnectionManager connManager)
      Returns:
      this instance.
    • setConnectionManagerShared

      public final HttpAsyncClientBuilder 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.
    • setIOReactorConfig

      public final HttpAsyncClientBuilder setIOReactorConfig(org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig)
      Sets IOReactorConfig configuration.
      Returns:
      this instance.
    • setIOSessionListener

      public final HttpAsyncClientBuilder setIOSessionListener(org.apache.hc.core5.reactor.IOSessionListener ioSessionListener)
      Sets IOSessionListener listener.
      Returns:
      this instance.
      Since:
      5.2
    • setIoReactorExceptionCallback

      public final HttpAsyncClientBuilder setIoReactorExceptionCallback(org.apache.hc.core5.function.Callback<Exception> ioReactorExceptionCallback)
      Sets the callback that will be invoked when the client's IOReactor encounters an uncaught exception.
      Returns:
      this instance.
      Since:
      5.1
    • setCharCodingConfig

      public final HttpAsyncClientBuilder setCharCodingConfig(org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig)
      Sets CharCodingConfig configuration.
      Returns:
      this instance.
    • setConnectionReuseStrategy

      public final HttpAsyncClientBuilder setConnectionReuseStrategy(org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy)
      Sets ConnectionReuseStrategy instance.

      Please note this strategy applies to HTTP/1.0 and HTTP/1.1 connections only

      Returns:
      this instance.
    • setKeepAliveStrategy

      public final HttpAsyncClientBuilder setKeepAliveStrategy(ConnectionKeepAliveStrategy keepAliveStrategy)
      Returns:
      this instance.
    • setUserTokenHandler

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

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

      Returns:
      this instance.
    • setTargetAuthenticationStrategy

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

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

      public final HttpAsyncClientBuilder setIoSessionDecorator(org.apache.hc.core5.function.Decorator<org.apache.hc.core5.reactor.IOSession> ioSessionDecorator)
      Sets the IOSession Decorator that will be use with the client's IOReactor.
      Returns:
      this instance.
      Since:
      5.2
    • addResponseInterceptorFirst

      public final HttpAsyncClientBuilder 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 HttpAsyncClientBuilder addResponseInterceptorLast(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)
      Adds this protocol interceptor to the tail of the protocol processing list.
      Returns:
      this instance.
    • addExecInterceptorBefore

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

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

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

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

      public final HttpAsyncClientBuilder addExecInterceptorLast(String name, AsyncExecChainHandler interceptor)
      Add an interceptor to the tail of the processing list.
      Returns:
      this instance.
    • addRequestInterceptorFirst

      public final HttpAsyncClientBuilder 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 HttpAsyncClientBuilder addRequestInterceptorLast(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)
      Adds this protocol interceptor to the tail of the protocol processing list.
      Returns:
      this instance.
    • setRetryStrategy

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

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

      Returns:
      this instance.
    • setRedirectStrategy

      public HttpAsyncClientBuilder setRedirectStrategy(RedirectStrategy redirectStrategy)
      Sets RedirectStrategy instance.

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

      Returns:
      this instance.
    • setSchemePortResolver

      public final HttpAsyncClientBuilder setSchemePortResolver(SchemePortResolver schemePortResolver)
      Sets SchemePortResolver instance.
      Returns:
      this instance.
    • setThreadFactory

      public final HttpAsyncClientBuilder setThreadFactory(ThreadFactory threadFactory)
      Sets ThreadFactory instance.
      Returns:
      this instance.
    • setUserAgent

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

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

      public final HttpAsyncClientBuilder 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.
    • setProxy

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

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

      Returns:
      this instance.
    • setRoutePlanner

      public final HttpAsyncClientBuilder setRoutePlanner(HttpRoutePlanner routePlanner)
      Sets HttpRoutePlanner instance.
      Returns:
      this instance.
    • setDefaultCredentialsProvider

      public final HttpAsyncClientBuilder 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 HttpAsyncClientBuilder 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 HttpAsyncClientBuilder 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.
    • setDefaultCookieStore

      public final HttpAsyncClientBuilder 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.
    • setDefaultRequestConfig

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

      public final HttpAsyncClientBuilder disableConnectionState()
      Disables connection state tracking.
      Returns:
      this instance.
    • disableRedirectHandling

      public final HttpAsyncClientBuilder disableRedirectHandling()
      Disables automatic redirect handling.
      Returns:
      this instance.
    • disableAutomaticRetries

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

      public final HttpAsyncClientBuilder disableCookieManagement()
      Disables state (cookie) management.
      Returns:
      this instance.
    • disableAuthCaching

      public final HttpAsyncClientBuilder disableAuthCaching()
      Disables authentication scheme caching.
      Returns:
      this instance.
    • evictExpiredConnections

      public final HttpAsyncClientBuilder 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.
      See Also:
    • evictIdleConnections

      public final HttpAsyncClientBuilder 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.
      See Also:
    • setContentDecoderMap

      public HttpAsyncClientBuilder setContentDecoderMap(LinkedHashMap<String, UnaryOperator<org.apache.hc.core5.http.nio.AsyncDataConsumer>> contentDecoderMap)
      Replaces the current decoder registry with contentDecoderMap.

      The map’s insertion order defines the Accept-Encoding preference list sent on every request.

      Parameters:
      contentDecoderMap - a non-empty LinkedHashMap whose keys are lower-case coding tokens and whose values create a fresh wrapper consumer for each response
      Returns:
      this builder instance
      Since:
      5.6
    • disableContentCompression

      public HttpAsyncClientBuilder disableContentCompression()
      Disables transparent response decompression for the client produced by this builder.
      Returns:
      this builder instance
      Since:
      5.6
    • disableRequestPriority

      @Experimental public final HttpAsyncClientBuilder disableRequestPriority()
      Disable installing the HTTP/2 Priority header interceptor by default.
      Since:
      5.6
    • setEarlyHintsListener

      public final HttpAsyncClientBuilder setEarlyHintsListener(EarlyHintsListener listener)
      Registers a global EarlyHintsListener that will be notified when the client receives 103 Early Hints informational responses for any request executed by the built client.
      Parameters:
      listener - the listener to receive 103 Early Hints events, or null to remove the listener
      Returns:
      this builder
      Since:
      5.6
    • customizeExecChain

      @Internal protected void customizeExecChain(org.apache.hc.core5.http.config.NamedElementChain<AsyncExecChainHandler> 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.

    • contextAdaptor

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

      @Internal public AsyncClientConnectionManager getConnManager()
    • build

      public CloseableHttpAsyncClient build()
    • getProperty

      private String getProperty(String key, String defaultValue)