CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-apache-httpcomponents--httpclient

Apache HttpComponents Client is a library of components for building client side HTTP services

Pending
Overview
Eval results
Files

client-configuration.mddocs/

HTTP Client Configuration

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.

Client Factory Methods

Default Client Creation

public static CloseableHttpClient createDefault();

Creates a default HTTP client with standard configuration including connection pooling, redirect handling, and cookie management.

CloseableHttpClient httpClient = HttpClients.createDefault();

System Client Creation

public static CloseableHttpClient createSystem();

Creates an HTTP client using system properties for proxy settings and authentication.

CloseableHttpClient httpClient = HttpClients.createSystem();

Minimal Client Creation

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);

Custom Client Builder

public static HttpClientBuilder custom();

Returns a builder for creating customized HTTP clients.

CloseableHttpClient httpClient = HttpClients.custom()
    .setConnectionManager(connectionManager)
    .setDefaultRequestConfig(requestConfig)
    .build();

HttpClientBuilder Configuration

Connection Management

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

Request Configuration

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

Default Headers

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

Proxy Configuration

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

SSL Context

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

Authentication Configuration

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

Cookie Store

public HttpClientBuilder setDefaultCookieStore(CookieStore cookieStore);

Sets a custom cookie store for cookie management.

BasicCookieStore cookieStore = new BasicCookieStore();

CloseableHttpClient httpClient = HttpClients.custom()
    .setDefaultCookieStore(cookieStore)
    .build();

Disabling Features

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

Redirect and Retry Strategies

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

Request Configuration

RequestConfig Class

public class RequestConfig;

Configuration object for request-specific settings.

RequestConfig Methods

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

RequestConfig Builder

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);

Types

HttpClientBuilder

public class HttpClientBuilder;

Builder for creating configured HttpClient instances.

RequestConfig

public class RequestConfig {
    public static class Builder;
}

Configuration object for HTTP requests with nested Builder class for construction.

CloseableHttpClient

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

docs

authentication.md

client-configuration.md

connection-management.md

cookie-management.md

http-methods.md

index.md

response-handling.md

tile.json