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

## Class H2AsyncClientBuilder

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

    public class H2AsyncClientBuilder
    extends Object

Builder for HTTP/2 only `CloseableHttpAsyncClient` instances.

Concurrent message exchanges with the same connection route executed with these `CloseableHttpAsyncClient` instances will get automatically multiplexed over a single physical HTTP/2 connection.

When a particular component is not explicitly set this class will use its default implementation.

Since:
  5.0

### Constructor Summary

Constructors
`protected` `H2AsyncClientBuilder()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected void` `addCloseable(Closeable closeable)` Adds to the list of `Closeable` resources to be managed by the client.
`H2AsyncClientBuilder` `addExecInterceptorAfter(String existing, String name, AsyncExecChainHandler interceptor)` Adds this execution interceptor after interceptor with the given name.
`H2AsyncClientBuilder` `addExecInterceptorBefore(String existing, String name, AsyncExecChainHandler interceptor)` Adds this execution interceptor before an existing interceptor.
`H2AsyncClientBuilder` `addExecInterceptorFirst(String name, AsyncExecChainHandler interceptor)` Add an interceptor to the head of the processing list.
`H2AsyncClientBuilder` `addExecInterceptorLast(String name, AsyncExecChainHandler interceptor)` Add an interceptor to the tail of the processing list.
`H2AsyncClientBuilder` `addRequestInterceptorFirst(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)` Adds this protocol interceptor to the head of the protocol processing list.
`H2AsyncClientBuilder` `addRequestInterceptorLast(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)` Adds this protocol interceptor to the tail of the protocol processing list.
`H2AsyncClientBuilder` `addResponseInterceptorFirst(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)` Adds this protocol interceptor to the head of the protocol processing list.
`H2AsyncClientBuilder` `addResponseInterceptorLast(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)` Adds this protocol interceptor to the tail of the protocol processing list.
`CloseableHttpAsyncClient` `build()`
`static H2AsyncClientBuilder` `create()`
`protected void` `customizeExecChain(org.apache.hc.core5.http.config.NamedElementChain<AsyncExecChainHandler> execChainDefinition)` Request exec chain customization and extension.
`H2AsyncClientBuilder` `disableAuthCaching()` Disables authentication scheme caching.
`H2AsyncClientBuilder` `disableAutomaticRetries()` Disables automatic request recovery and re-execution.
`H2AsyncClientBuilder` `disableCookieManagement()` Disables state (cookie) management.
`H2AsyncClientBuilder` `disableRedirectHandling()` Disables automatic redirect handling.
`H2AsyncClientBuilder` `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.
`H2AsyncClientBuilder` `replaceExecInterceptor(String existing, AsyncExecChainHandler interceptor)` Replace an existing interceptor with the given name with new interceptor.
`H2AsyncClientBuilder` `setCharCodingConfig(org.apache.hc.core5.http.config.CharCodingConfig charCodingConfig)` Sets `CharCodingConfig` configuration.
`H2AsyncClientBuilder` `setConnectionConfigResolver(org.apache.hc.core5.function.Resolver<org.apache.hc.core5.http.HttpHost,ConnectionConfig> connectionConfigResolver)` Assigns `Resolver` for `ConnectionConfig` on a per host basis.
`H2AsyncClientBuilder` `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.
`H2AsyncClientBuilder` `setDefaultConnectionConfig(ConnectionConfig connectionConfig)` Assigns the same `ConnectionConfig` for all hosts.
`H2AsyncClientBuilder` `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.
`H2AsyncClientBuilder` `setDefaultCookieStore(CookieStore cookieStore)` Assigns default `CookieStore` instance which will be used for request execution if not explicitly set in the client execution context.
`H2AsyncClientBuilder` `setDefaultCredentialsProvider(CredentialsProvider credentialsProvider)` Assigns default `CredentialsProvider` instance which will be used for request execution if not explicitly set in the client execution context.
`H2AsyncClientBuilder` `setDefaultHeaders(Collection<? extends org.apache.hc.core5.http.Header> defaultHeaders)` Assigns default request header values.
`H2AsyncClientBuilder` `setDefaultRequestConfig(RequestConfig config)` Assigns default `RequestConfig` instance which will be used for request execution if not explicitly set in the client execution context.
`H2AsyncClientBuilder` `setDnsResolver(DnsResolver dnsResolver)` Assigns `DnsResolver` instance.
`H2AsyncClientBuilder` `setH2Config(org.apache.hc.core5.http2.config.H2Config h2Config)` Sets `H2Config` configuration.
`H2AsyncClientBuilder` `setIOReactorConfig(org.apache.hc.core5.reactor.IOReactorConfig ioReactorConfig)` Sets `IOReactorConfig` configuration.
`H2AsyncClientBuilder` `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.
`H2AsyncClientBuilder` `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.
`H2AsyncClientBuilder` `setIOSessionListener(org.apache.hc.core5.reactor.IOSessionListener ioSessionListener)` Sets `IOSessionListener` listener.
`H2AsyncClientBuilder` `setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy)` Assigns `AuthenticationStrategy` instance for proxy authentication.
`H2AsyncClientBuilder` `setRedirectStrategy(RedirectStrategy redirectStrategy)` Assigns `RedirectStrategy` instance.
`H2AsyncClientBuilder` `setRetryStrategy(HttpRequestRetryStrategy retryStrategy)` Assigns `HttpRequestRetryStrategy` instance.
`H2AsyncClientBuilder` `setRoutePlanner(HttpRoutePlanner routePlanner)` Assigns `HttpRoutePlanner` instance.
`H2AsyncClientBuilder` `setSchemePortResolver(SchemePortResolver schemePortResolver)` Assigns `SchemePortResolver` instance.
`H2AsyncClientBuilder` `setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy)` Assigns `AuthenticationStrategy` instance for target host authentication.
`H2AsyncClientBuilder` `setThreadFactory(ThreadFactory threadFactory)` Assigns `ThreadFactory` instance.
`H2AsyncClientBuilder` `setTlsStrategy(org.apache.hc.core5.http.nio.ssl.TlsStrategy tlsStrategy)` Assigns `TlsStrategy` instance.
`H2AsyncClientBuilder` `setUserAgent(String userAgent)` Assigns `User-Agent` value.
`H2AsyncClientBuilder` `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

#### H2AsyncClientBuilder

    protected H2AsyncClientBuilder()

### Method Detail

#### create

    public static H2AsyncClientBuilder create()

#### setH2Config

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

Sets `H2Config` configuration.

#### setIOReactorConfig

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

Sets `IOReactorConfig` configuration.

#### setIOSessionListener

    public final H2AsyncClientBuilder setIOSessionListener(org.apache.hc.core5.reactor.IOSessionListener ioSessionListener)

Sets `IOSessionListener` listener.

Since:
  5.2

#### setCharCodingConfig

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

Sets `CharCodingConfig` configuration.

#### setTargetAuthenticationStrategy

    public final H2AsyncClientBuilder setTargetAuthenticationStrategy(AuthenticationStrategy targetAuthStrategy)

Assigns `AuthenticationStrategy` instance for target host authentication.

#### setProxyAuthenticationStrategy

    public final H2AsyncClientBuilder setProxyAuthenticationStrategy(AuthenticationStrategy proxyAuthStrategy)

Assigns `AuthenticationStrategy` instance for proxy authentication.

#### setIoReactorExceptionCallback

    public final H2AsyncClientBuilder 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.

Since:
  5.2

#### setIoSessionDecorator

    public final H2AsyncClientBuilder 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.

Since:
  5.2

#### addResponseInterceptorFirst

    public final H2AsyncClientBuilder addResponseInterceptorFirst(org.apache.hc.core5.http.HttpResponseInterceptor interceptor)

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

#### addResponseInterceptorLast

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

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

#### addExecInterceptorBefore

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

Adds this execution interceptor before an existing interceptor.

#### addExecInterceptorAfter

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

Adds this execution interceptor after interceptor with the given name.

#### replaceExecInterceptor

    public final H2AsyncClientBuilder replaceExecInterceptor(String existing,
                                                             AsyncExecChainHandler interceptor)

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

#### addExecInterceptorFirst

    public final H2AsyncClientBuilder addExecInterceptorFirst(String name,
                                                              AsyncExecChainHandler interceptor)

Add an interceptor to the head of the processing list.

#### addExecInterceptorLast

    public final H2AsyncClientBuilder addExecInterceptorLast(String name,
                                                             AsyncExecChainHandler interceptor)

Add an interceptor to the tail of the processing list.

#### addRequestInterceptorFirst

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

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

#### addRequestInterceptorLast

    public final H2AsyncClientBuilder addRequestInterceptorLast(org.apache.hc.core5.http.HttpRequestInterceptor interceptor)

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

#### setRetryStrategy

    public final H2AsyncClientBuilder setRetryStrategy(HttpRequestRetryStrategy retryStrategy)

Assigns `HttpRequestRetryStrategy` instance.

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

#### setRedirectStrategy

    public H2AsyncClientBuilder setRedirectStrategy(RedirectStrategy redirectStrategy)

Assigns `RedirectStrategy` instance.

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

#### setSchemePortResolver

    public final H2AsyncClientBuilder setSchemePortResolver(SchemePortResolver schemePortResolver)

Assigns `SchemePortResolver` instance.

#### setDnsResolver

    public final H2AsyncClientBuilder setDnsResolver(DnsResolver dnsResolver)

Assigns `DnsResolver` instance.

#### setTlsStrategy

    public final H2AsyncClientBuilder setTlsStrategy(org.apache.hc.core5.http.nio.ssl.TlsStrategy tlsStrategy)

Assigns `TlsStrategy` instance.

#### setThreadFactory

    public final H2AsyncClientBuilder setThreadFactory(ThreadFactory threadFactory)

Assigns `ThreadFactory` instance.

#### setUserAgent

    public final H2AsyncClientBuilder setUserAgent(String userAgent)

Assigns `User-Agent` value.

#### setDefaultHeaders

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

Assigns default request header values.

#### setRoutePlanner

    public final H2AsyncClientBuilder setRoutePlanner(HttpRoutePlanner routePlanner)

Assigns `HttpRoutePlanner` instance.

#### setDefaultCredentialsProvider

    public final H2AsyncClientBuilder 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 H2AsyncClientBuilder 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 H2AsyncClientBuilder 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.

#### setDefaultCookieStore

    public final H2AsyncClientBuilder 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 H2AsyncClientBuilder setDefaultRequestConfig(RequestConfig config)

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

#### setConnectionConfigResolver

    public final H2AsyncClientBuilder setConnectionConfigResolver(org.apache.hc.core5.function.Resolver<org.apache.hc.core5.http.HttpHost,ConnectionConfig> connectionConfigResolver)

Assigns `Resolver` for `ConnectionConfig` on a per host basis.

Since:
  5.2

#### setDefaultConnectionConfig

    public final H2AsyncClientBuilder setDefaultConnectionConfig(ConnectionConfig connectionConfig)

Assigns the same `ConnectionConfig` for all hosts.

Since:
  5.2

#### useSystemProperties

    public final H2AsyncClientBuilder useSystemProperties()

Use system properties when creating and configuring default implementations.

#### disableRedirectHandling

    public final H2AsyncClientBuilder disableRedirectHandling()

Disables automatic redirect handling.

#### disableAutomaticRetries

    public final H2AsyncClientBuilder disableAutomaticRetries()

Disables automatic request recovery and re-execution.

#### disableCookieManagement

    public final H2AsyncClientBuilder disableCookieManagement()

Disables state (cookie) management.

#### disableAuthCaching

    public final H2AsyncClientBuilder disableAuthCaching()

Disables authentication scheme caching.

#### evictIdleConnections

    public final H2AsyncClientBuilder 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.

#### 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()