org.apache.hc.client5.http.impl.async

## Class HttpAsyncClientBuilder

- java.lang.Object
- - org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder

    public class HttpAsyncClientBuilder
    extends Object

Builder for `CloseableHttpAsyncClient` 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
- 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

### Constructor Summary

Constructors
`protected` `HttpAsyncClientBuilder()`

### Method Summary

Methods
`protected void` `addCloseable(Closeable closeable)` Adds to the list of `Closeable` resources to be managed by the client.
`HttpAsyncClientBuilder` `addExecInterceptorAfter(String existing, String name, AsyncExecChainHandler interceptor)` Adds this execution interceptor after interceptor with the given name.
`HttpAsyncClientBuilder` `addExecInterceptorBefore(String existing, String name, AsyncExecChainHandler interceptor)` Adds this execution interceptor before an existing interceptor.
`HttpAsyncClientBuilder` `addExecInterceptorFirst(String name, AsyncExecChainHandler interceptor)` Add an interceptor to the head of the processing list.
`HttpAsyncClientBuilder` `addExecInterceptorLast(String name, AsyncExecChainHandler interceptor)` Add an interceptor to the tail of the processing list.
`HttpAsyncClientBuilder` `addRequestInterceptorFirst(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)` Adds this protocol interceptor to the head of the protocol processing list.
`HttpAsyncClientBuilder` `addRequestInterceptorFirst(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)` Adds this protocol interceptor to the head of the protocol processing list.
`HttpAsyncClientBuilder` `addResponseInterceptorLast(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)` Adds this protocol interceptor to the tail of the protocol processing list.
`HttpAsyncClientBuilder` `addResponseInterceptorLast(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)` Adds this protocol interceptor to the tail of the protocol processing list.
`CloseableHttpAsyncClient` `build()`
`static HttpAsyncClientBuilder` `create()`
`protected void` `customizeExecChain(org.apache.hc.core5.http.config.NamedElementChain<AsyncExecChainHandler> execChainDefinition)` Request exec chain customization and extension.
`HttpAsyncClientBuilder` `disableAuthCaching()` Disables authentication scheme caching.
`HttpAsyncClientBuilder` `disableAutomaticRetries()` Disables automatic request recovery and re-execution.
`HttpAsyncClientBuilder` `disableConnectionState()` Disables connection state tracking.
`HttpAsyncClientBuilder` `disableCookieManagement()` Disables state (cookie) management.
`HttpAsyncClientBuilder` `disableRedirectHandling()` Disables automatic redirect handling.
`HttpAsyncClientBuilder` `evictExpiredConnections()` Makes this instance of HttpClient proactively evict expired connections from the connection pool using a background thread.
`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.
`HttpAsyncClientBuilder` `replaceExecInterceptor(String existing, AsyncExecChainHandler interceptor)` Replace an existing interceptor with the given name with new interceptor.
`HttpAsyncClientBuilder` `setCharCodingConfig(org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig)` Sets `CharCodingConfig` configuration.
`HttpAsyncClientBuilder` `setConnectionManager(AsyncClientConnectionManager connManager)` Assigns `AsyncClientConnectionManager` instance.
`HttpAsyncClientBuilder` `setConnectionManagerShared(boolean shared)` Defines the connection manager is to be shared by multiple client instances.
`HttpAsyncClientBuilder` `setConnectionReuseStrategy(org.apache.hc.core5.http.ConnectionReuseStrategy reuseStrategy)` Assigns `ConnectionReuseStrategy` instance.
`HttpAsyncClientBuilder` `setDefaultAuthSchemeRegistry(org.apache.hc.core5.http.config.Lookup<AuthSchemeProvider> authSchemeRegistry)` Assigns default `AuthScheme` registry which will be used for request execution if not explicitly set in the client execution context.
`HttpAsyncClientBuilder` `setDefaultCookieSpecRegistry(org.apache.hc.core5.http.config.Lookup<CookieSpecProvider> cookieSpecRegistry)` Assigns default `CookieSpec` registry which will be used for request execution if not explicitly set in the client execution context.
`HttpAsyncClientBuilder` `setDefaultCookieStore(CookieStore cookieStore)` Assigns default `CookieStore` instance which will be used for request execution if not explicitly set in the client execution context.
`HttpAsyncClientBuilder` `setDefaultCredentialsProvider(CredentialsProvider credentialsProvider)` Assigns default `CredentialsProvider` instance which will be used for request execution if not explicitly set in the client execution context.
`HttpAsyncClientBuilder` `setDefaultHeaders(Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders)` Assigns default request header values.
`HttpAsyncClientBuilder` `setDefaultRequestConfig(RequestConfig config)` Assigns default `RequestConfig` instance which will be used for request execution if not explicitly set in the client execution context.
`HttpAsyncClientBuilder` `setH1Config(org.apache.hc.core5.http.config.H1Config h1Config)` Sets `H1Config` configuration.
`HttpAsyncClientBuilder` `setH2Config(org.apache.hc.core5.http2.config.H2Config h2Config)` Sets `H2Config` configuration.
`HttpAsyncClientBuilder` `setIOReactorConfig(org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig)` Sets `IOReactorConfig` configuration.
`HttpAsyncClientBuilder` `setKeepAliveStrategy(ConnectionKeepAliveStrategy keepAliveStrategy)` Assigns `ConnectionKeepAliveStrategy` instance.
`HttpAsyncClientBuilder` `setProxy(org.apache.hc.core5.http.HttpHost proxy)` Assigns default proxy value.
`HttpAsyncClientBuilder` `setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy)` Assigns `AuthenticationStrategy` instance for proxy authentication.
`HttpAsyncClientBuilder` `setRedirectStrategy(RedirectStrategy redirectStrategy)` Assigns `RedirectStrategy` instance.
`HttpAsyncClientBuilder` `setRetryHandler(HttpRequestRetryHandler retryHandler)` Assigns `HttpRequestRetryHandler` instance.
`HttpAsyncClientBuilder` `setRoutePlanner(HttpRoutePlanner routePlanner)` Assigns `HttpRoutePlanner` instance.
`HttpAsyncClientBuilder` `setSchemePortResolver(SchemePortResolver schemePortResolver)` Assigns `SchemePortResolver` instance.
`HttpAsyncClientBuilder` `setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy)` Assigns `AuthenticationStrategy` instance for target host authentication.
`HttpAsyncClientBuilder` `setThreadFactory(ThreadFactory threadFactory)` Assigns `ThreadFactory` instance.
`HttpAsyncClientBuilder` `setUserAgent(String userAgent)` Assigns `User-Agent` value.
`HttpAsyncClientBuilder` `setUserTokenHandler(UserTokenHandler userTokenHandler)` Assigns `UserTokenHandler` instance.
`HttpAsyncClientBuilder` `setVersionPolicy(org.apache.hc.core5.http2.HttpVersionPolicy versionPolicy)` Sets HTTP protocol version policy.
`HttpAsyncClientBuilder` `useSystemProperties()` Use system properties when creating and configuring default implementations.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### HttpAsyncClientBuilder

    protected HttpAsyncClientBuilder()

### Method Detail

#### create

    public static HttpAsyncClientBuilder create()

#### setVersionPolicy

    public final HttpAsyncClientBuilder setVersionPolicy(org.apache.hc.core5.http2.HttpVersionPolicy versionPolicy)

Sets HTTP protocol version policy.

#### setH1Config

    public final HttpAsyncClientBuilder setH1Config(org.apache.hc.core5.http.config.H1Config h1Config)

Sets `H1Config` configuration.

#### setH2Config

    public final HttpAsyncClientBuilder setH2Config(org.apache.hc.core5.http2.config.H2Config h2Config)

Sets `H2Config` configuration.

#### setConnectionManager

    public final HttpAsyncClientBuilder setConnectionManager(AsyncClientConnectionManager connManager)

Assigns `AsyncClientConnectionManager` 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.

#### setIOReactorConfig

    public final HttpAsyncClientBuilder setIOReactorConfig(org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig)

Sets `IOReactorConfig` configuration.

#### setCharCodingConfig

    public final HttpAsyncClientBuilder setCharCodingConfig(org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig)

Sets `CharCodingConfig` configuration.

#### setConnectionReuseStrategy

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

Assigns `ConnectionReuseStrategy` instance.

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

#### setKeepAliveStrategy

    public final HttpAsyncClientBuilder setKeepAliveStrategy(ConnectionKeepAliveStrategy keepAliveStrategy)

Assigns `ConnectionKeepAliveStrategy` instance.

#### setUserTokenHandler

    public final HttpAsyncClientBuilder setUserTokenHandler(UserTokenHandler userTokenHandler)

Assigns `UserTokenHandler` instance.

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

#### setTargetAuthenticationStrategy

    public final HttpAsyncClientBuilder setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy)

Assigns `AuthenticationStrategy` instance for target host authentication.

#### setProxyAuthenticationStrategy

    public final HttpAsyncClientBuilder setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy)

Assigns `AuthenticationStrategy` instance for proxy authentication.

#### addRequestInterceptorFirst

    public final HttpAsyncClientBuilder addRequestInterceptorFirst(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)

Adds this protocol interceptor to the head of the protocol processing list.

#### addResponseInterceptorLast

    public final HttpAsyncClientBuilder addResponseInterceptorLast(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)

Adds this protocol interceptor to the tail of the protocol processing list.

#### addExecInterceptorBefore

    public final HttpAsyncClientBuilder addExecInterceptorBefore(String existing,
                                                  String name,
                                                  AsyncExecChainHandler interceptor)

Adds this execution interceptor before an existing interceptor.

#### addExecInterceptorAfter

    public final HttpAsyncClientBuilder addExecInterceptorAfter(String existing,
                                                 String name,
                                                 AsyncExecChainHandler interceptor)

Adds this execution interceptor after interceptor with the given name.

#### replaceExecInterceptor

    public final HttpAsyncClientBuilder replaceExecInterceptor(String existing,
                                                AsyncExecChainHandler interceptor)

Replace an existing interceptor with the given name with new interceptor.

#### addExecInterceptorFirst

    public final HttpAsyncClientBuilder addExecInterceptorFirst(String name,
                                                 AsyncExecChainHandler interceptor)

Add an interceptor to the head of the processing list.

#### addExecInterceptorLast

    public final HttpAsyncClientBuilder addExecInterceptorLast(String name,
                                                AsyncExecChainHandler interceptor)

Add an interceptor to the tail of the processing list.

#### addRequestInterceptorFirst

    public final HttpAsyncClientBuilder addRequestInterceptorFirst(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)

Adds this protocol interceptor to the head of the protocol processing list.

#### addResponseInterceptorLast

    public final HttpAsyncClientBuilder addResponseInterceptorLast(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)

Adds this protocol interceptor to the tail of the protocol processing list.

#### setRetryHandler

    public final HttpAsyncClientBuilder setRetryHandler(HttpRequestRetryHandler retryHandler)

Assigns `HttpRequestRetryHandler` instance.

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

#### setRedirectStrategy

    public HttpAsyncClientBuilder setRedirectStrategy(RedirectStrategy redirectStrategy)

Assigns `RedirectStrategy` instance.

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

#### setSchemePortResolver

    public final HttpAsyncClientBuilder setSchemePortResolver(SchemePortResolver schemePortResolver)

Assigns `SchemePortResolver` instance.

#### setThreadFactory

    public final HttpAsyncClientBuilder setThreadFactory(ThreadFactory threadFactory)

Assigns `ThreadFactory` instance.

#### setUserAgent

    public final HttpAsyncClientBuilder setUserAgent(String userAgent)

Assigns `User-Agent` value.

#### setDefaultHeaders

    public final HttpAsyncClientBuilder setDefaultHeaders(Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders)

Assigns default request header values.

#### setProxy

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

Assigns default proxy value.

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

#### setRoutePlanner

    public final HttpAsyncClientBuilder setRoutePlanner(HttpRoutePlanner routePlanner)

Assigns `HttpRoutePlanner` instance.

#### setDefaultCredentialsProvider

    public final HttpAsyncClientBuilder 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 HttpAsyncClientBuilder setDefaultAuthSchemeRegistry(org.apache.hc.core5.http.config.Lookup<AuthSchemeProvider> authSchemeRegistry)

Assigns default `AuthScheme` registry which will be used for request execution if not explicitly set in the client execution context.

#### setDefaultCookieSpecRegistry

    public final HttpAsyncClientBuilder setDefaultCookieSpecRegistry(org.apache.hc.core5.http.config.Lookup<CookieSpecProvider> cookieSpecRegistry)

Assigns default `CookieSpec` registry which will be used for request execution if not explicitly set in the client execution context.

#### setDefaultCookieStore

    public final HttpAsyncClientBuilder setDefaultCookieStore(CookieStore cookieStore)

Assigns default `CookieStore` instance which will be used for request execution if not explicitly set in the client execution context.

#### setDefaultRequestConfig

    public final HttpAsyncClientBuilder 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 HttpAsyncClientBuilder useSystemProperties()

Use system properties when creating and configuring default implementations.

#### disableConnectionState

    public final HttpAsyncClientBuilder disableConnectionState()

Disables connection state tracking.

#### disableRedirectHandling

    public final HttpAsyncClientBuilder disableRedirectHandling()

Disables automatic redirect handling.

#### disableAutomaticRetries

    public final HttpAsyncClientBuilder disableAutomaticRetries()

Disables automatic request recovery and re-execution.

#### disableCookieManagement

    public final HttpAsyncClientBuilder disableCookieManagement()

Disables state (cookie) management.

#### disableAuthCaching

    public final HttpAsyncClientBuilder disableAuthCaching()

Disables authentication scheme caching.

#### 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 configuted to use a shared connection manager.

See Also:
  `setConnectionManagerShared(boolean)`, `ConnPoolControl.closeExpired()`

#### 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 configuted 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.
See Also:
  `setConnectionManagerShared(boolean)`, `ConnPoolControl.closeIdle(TimeValue)`

#### 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.

#### build

    public CloseableHttpAsyncClient build()