Apache HttpComponents Client is a library of components for building client side HTTP services
—
Apache HttpClient provides flexible configuration options for creating HTTP clients tailored to specific requirements. This includes connection management, timeouts, authentication, SSL settings, and behavioral policies.
public static CloseableHttpClient createDefault();Creates a default HTTP client with standard configuration including connection pooling, redirect handling, and cookie management.
CloseableHttpClient httpClient = HttpClients.createDefault();public static CloseableHttpClient createSystem();Creates an HTTP client using system properties for proxy settings and authentication.
CloseableHttpClient httpClient = HttpClients.createSystem();public static CloseableHttpClient createMinimal();
public static CloseableHttpClient createMinimal(HttpClientConnectionManager connManager);Creates a minimal HTTP client with basic functionality and no connection pooling. The overloaded version allows specifying a custom connection manager.
CloseableHttpClient httpClient = HttpClients.createMinimal();
// With custom connection manager
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient httpClient = HttpClients.createMinimal(connManager);public static HttpClientBuilder custom();Returns a builder for creating customized HTTP clients.
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(requestConfig)
.build();public HttpClientBuilder setConnectionManager(HttpClientConnectionManager connManager);Sets a custom connection manager for controlling connection lifecycle and pooling.
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(100);
cm.setDefaultMaxPerRoute(20);
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.build();public HttpClientBuilder setDefaultRequestConfig(RequestConfig config);Sets default request configuration for all requests made by this client.
RequestConfig config = RequestConfig.custom()
.setSocketTimeout(5000)
.setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(config)
.build();public HttpClientBuilder setDefaultHeaders(Collection<? extends Header> defaultHeaders);Sets default headers to be included with all requests.
List<Header> defaultHeaders = Arrays.asList(
new BasicHeader("User-Agent", "MyApplication/1.0"),
new BasicHeader("Accept", "application/json")
);
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultHeaders(defaultHeaders)
.build();public HttpClientBuilder setProxy(HttpHost proxy);Configures a proxy server for all requests.
HttpHost proxy = new HttpHost("proxy.example.com", 8080, "http");
CloseableHttpClient httpClient = HttpClients.custom()
.setProxy(proxy)
.build();public HttpClientBuilder setSSLContext(SSLContext sslContext);Sets a custom SSL context for HTTPS connections.
SSLContext sslContext = SSLContextBuilder.create()
.loadTrustMaterial(trustStore, trustStorePassword)
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLContext(sslContext)
.build();public HttpClientBuilder setDefaultCredentialsProvider(CredentialsProvider credentialsProvider);Sets a credentials provider for authentication.
BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
new AuthScope("example.com", 80),
new UsernamePasswordCredentials("user", "password")
);
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCredentialsProvider(credsProvider)
.build();public HttpClientBuilder setDefaultCookieStore(CookieStore cookieStore);Sets a custom cookie store for cookie management.
BasicCookieStore cookieStore = new BasicCookieStore();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();public HttpClientBuilder disableRedirectHandling();
public HttpClientBuilder disableCookieManagement();
public HttpClientBuilder disableAuthentication();
public HttpClientBuilder disableConnectionState();Disables specific client features for customized behavior.
CloseableHttpClient httpClient = HttpClients.custom()
.disableRedirectHandling()
.disableCookieManagement()
.build();public HttpClientBuilder setRedirectStrategy(RedirectStrategy redirectStrategy);
public HttpClientBuilder setRetryHandler(HttpRequestRetryHandler retryHandler);
public HttpClientBuilder setServiceUnavailableRetryStrategy(ServiceUnavailableRetryStrategy serviceUnavailRetryStrategy);Sets custom strategies for handling redirects and retries.
// Custom redirect strategy
RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
// Custom retry handler
HttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(3, true);
CloseableHttpClient httpClient = HttpClients.custom()
.setRedirectStrategy(redirectStrategy)
.setRetryHandler(retryHandler)
.build();public class RequestConfig;Configuration object for request-specific settings.
public int getSocketTimeout();
public int getConnectTimeout();
public int getConnectionRequestTimeout();
public boolean isRedirectsEnabled();
public boolean isRelativeRedirectsAllowed();
public boolean isCircularRedirectsAllowed();
public int getMaxRedirects();
public HttpHost getProxy();
public InetAddress getLocalAddress();
public boolean isAuthenticationEnabled();
public Collection<String> getTargetPreferredAuthSchemes();
public Collection<String> getProxyPreferredAuthSchemes();
public boolean isExpectContinueEnabled();
public String getCookieSpec();
public boolean isContentCompressionEnabled();public static RequestConfig.Builder custom();Creates a builder for request configuration.
public RequestConfig.Builder setSocketTimeout(int socketTimeout);
public RequestConfig.Builder setConnectTimeout(int connectTimeout);
public RequestConfig.Builder setConnectionRequestTimeout(int connectionRequestTimeout);
public RequestConfig.Builder setRedirectsEnabled(boolean redirectsEnabled);
public RequestConfig.Builder setMaxRedirects(int maxRedirects);
public RequestConfig.Builder setCircularRedirectsAllowed(boolean circularRedirectsAllowed);
public RequestConfig.Builder setRelativeRedirectsAllowed(boolean relativeRedirectsAllowed);
public RequestConfig.Builder setProxy(HttpHost proxy);
public RequestConfig.Builder setLocalAddress(InetAddress localAddress);
public RequestConfig.Builder setAuthenticationEnabled(boolean authenticationEnabled);
public RequestConfig.Builder setTargetPreferredAuthSchemes(Collection<String> targetPreferredAuthSchemes);
public RequestConfig.Builder setProxyPreferredAuthSchemes(Collection<String> proxyPreferredAuthSchemes);
public RequestConfig.Builder setExpectContinueEnabled(boolean expectContinueEnabled);
public RequestConfig.Builder setCookieSpec(String cookieSpec);
public RequestConfig.Builder setContentCompressionEnabled(boolean contentCompressionEnabled);
public RequestConfig build();Example usage:
RequestConfig config = RequestConfig.custom()
.setSocketTimeout(10000)
.setConnectTimeout(10000)
.setConnectionRequestTimeout(5000)
.setRedirectsEnabled(true)
.setMaxRedirects(5)
.build();
HttpGet httpGet = new HttpGet("https://api.example.com");
httpGet.setConfig(config);public class HttpClientBuilder;Builder for creating configured HttpClient instances.
public class RequestConfig {
public static class Builder;
}Configuration object for HTTP requests with nested Builder class for construction.
public abstract class CloseableHttpClient implements HttpClient, Closeable;Main HTTP client interface that extends HttpClient and implements Closeable for resource management.
Install with Tessl CLI
npx tessl i tessl/maven-org-apache-httpcomponents--httpclient