Apache HttpComponents Client is a library of components for building client side HTTP services
npx @tessl/cli install tessl/maven-org-apache-httpcomponents--httpclient@4.5.0Apache HttpClient is a comprehensive Java library for building robust client-side HTTP services. It provides essential functionality for HTTP/1.1 and HTTP/2 protocols, connection pooling, authentication mechanisms, cookie management, SSL/TLS support, proxy configuration, and automatic redirect handling.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;For closeable HTTP clients (recommended for proper resource management):
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.util.EntityUtils;
// Create HTTP client
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
// Create GET request
HttpGet httpGet = new HttpGet("https://api.example.com/data");
// Execute request
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
// Check response status
int statusCode = response.getStatusLine().getStatusCode();
// Get response content
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Status: " + statusCode);
System.out.println("Response: " + responseBody);
}
} catch (Exception e) {
e.printStackTrace();
}Apache HttpClient is built around several key architectural patterns:
This layered architecture provides both simple default behavior and extensive customization capabilities, making it suitable for everything from basic HTTP requests to complex enterprise integration scenarios.
Core functionality for creating and configuring HTTP client instances with connection management, timeouts, authentication, and SSL settings.
public static CloseableHttpClient createDefault();
public static CloseableHttpClient createSystem();
public static CloseableHttpClient createMinimal();
public static HttpClientBuilder custom();Implementation classes for all standard HTTP methods with support for headers, entities, and request-specific configuration.
public class HttpGet extends HttpRequestBase;
public class HttpPost extends HttpEntityEnclosingRequestBase;
public class HttpPut extends HttpEntityEnclosingRequestBase;
public class HttpDelete extends HttpRequestBase;Connection pooling and lifecycle management for efficient resource utilization and performance optimization.
public interface HttpClientConnectionManager;
public class PoolingHttpClientConnectionManager implements HttpClientConnectionManager;
public class BasicHttpClientConnectionManager implements HttpClientConnectionManager;Comprehensive authentication mechanisms including Basic, Digest, NTLM, and Kerberos with credential management and SSL/TLS support.
public interface CredentialsProvider;
public class UsernamePasswordCredentials implements Credentials;
public class NTCredentials implements Credentials;
public class AuthScope;Full HTTP cookie handling with storage, expiration, and policy management for session-based applications.
public interface CookieStore;
public interface Cookie;
public class BasicCookieStore implements CookieStore;Flexible response processing with handler interfaces, closeable responses for resource management, and utility methods for content extraction.
public interface ResponseHandler<T>;
public interface CloseableHttpResponse extends HttpResponse, Closeable;Helper classes for URI building, URL encoding, and resource cleanup operations.
public class URIBuilder;
public class URLEncodedUtils;
public class HttpClientUtils;URIBuilder - Builder for constructing URIs with query parameters
URLEncodedUtils - Utility methods for URL encoding and form data
HttpClientUtils - Utility methods for safely closing HTTP resources