or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

authentication.mdclient-configuration.mdconnection-management.mdcookie-management.mdhttp-methods.mdindex.mdresponse-handling.md
tile.json

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

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

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.apache.httpcomponents/httpclient@4.5.x

To install, run

npx @tessl/cli install tessl/maven-org-apache-httpcomponents--httpclient@4.5.0

index.mddocs/

Apache HttpClient

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

Package Information

  • Package Name: org.apache.httpcomponents:httpclient
  • Package Type: maven
  • Language: Java
  • Installation: Add to Maven POM:
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.14</version>
    </dependency>

Core Imports

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;

Basic Usage

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

Architecture

Apache HttpClient is built around several key architectural patterns:

  • HttpClient Interface: Main interface for HTTP request execution with implementations for different scenarios
  • Connection Management: Pooled and basic connection managers for efficient resource utilization
  • Request/Response Model: Typed HTTP method classes (GET, POST, PUT, etc.) with comprehensive header and entity support
  • Configuration System: Builder patterns for client configuration with request-specific overrides
  • Authentication Framework: Pluggable authentication schemes (Basic, Digest, NTLM, Kerberos) with credential management
  • Protocol Handlers: Support for redirects, retries, and proxy handling with customizable strategies

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.

Capabilities

HTTP Client Creation and Configuration

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

HTTP Client Configuration

HTTP Request Methods

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;

HTTP Request Methods

Connection Management

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;

Connection Management

Authentication and Security

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;

Authentication and Security

Cookie Management

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;

Cookie Management

Response Handling

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;

Response Handling

Utility Classes

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