Apache HttpComponents Client is a library of components for building client side HTTP services
—
Apache HttpClient provides specific implementation classes for all standard HTTP methods. Each method class handles the appropriate HTTP semantics and provides method-specific functionality.
public interface HttpUriRequest extends HttpRequest {
String getMethod();
URI getURI();
void abort() throws UnsupportedOperationException;
}Base interface for HTTP requests with URI support.
public abstract class HttpRequestBase implements HttpUriRequest, AbortableHttpRequest, Cloneable, Configurable {
public void setURI(URI uri);
public URI getURI();
public void setConfig(RequestConfig config);
public RequestConfig getConfig();
public void abort();
public boolean isAborted();
}Abstract base class for HTTP requests providing common functionality.
public abstract class HttpEntityEnclosingRequestBase extends HttpRequestBase implements HttpEntityEnclosingRequest {
public void setEntity(HttpEntity entity);
public HttpEntity getEntity();
public boolean expectContinue();
}Base class for HTTP requests that can contain an entity body (POST, PUT, PATCH).
public class HttpGet extends HttpRequestBase {
public HttpGet();
public HttpGet(URI uri);
public HttpGet(String uri);
public String getMethod();
}HTTP GET method implementation for retrieving resources.
HttpGet httpGet = new HttpGet("https://api.example.com/users");
CloseableHttpResponse response = httpClient.execute(httpGet);public class HttpPost extends HttpEntityEnclosingRequestBase {
public HttpPost();
public HttpPost(URI uri);
public HttpPost(String uri);
public String getMethod();
}HTTP POST method implementation for submitting data.
HttpPost httpPost = new HttpPost("https://api.example.com/users");
StringEntity entity = new StringEntity("{\"name\":\"John\",\"age\":30}", ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(httpPost);public class HttpPut extends HttpEntityEnclosingRequestBase {
public HttpPut();
public HttpPut(URI uri);
public HttpPut(String uri);
public String getMethod();
}HTTP PUT method implementation for updating resources.
HttpPut httpPut = new HttpPut("https://api.example.com/users/123");
StringEntity entity = new StringEntity("{\"name\":\"John Updated\"}");
httpPut.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(httpPut);public class HttpDelete extends HttpRequestBase {
public HttpDelete();
public HttpDelete(URI uri);
public HttpDelete(String uri);
public String getMethod();
}HTTP DELETE method implementation for removing resources.
HttpDelete httpDelete = new HttpDelete("https://api.example.com/users/123");
CloseableHttpResponse response = httpClient.execute(httpDelete);public class HttpHead extends HttpRequestBase {
public HttpHead();
public HttpHead(URI uri);
public HttpHead(String uri);
public String getMethod();
}HTTP HEAD method implementation for retrieving headers only.
HttpHead httpHead = new HttpHead("https://api.example.com/users/123");
CloseableHttpResponse response = httpClient.execute(httpHead);public class HttpOptions extends HttpRequestBase {
public HttpOptions();
public HttpOptions(URI uri);
public HttpOptions(String uri);
public String getMethod();
public Set<String> getAllowedMethods(HttpResponse response);
}HTTP OPTIONS method implementation for discovering allowed methods.
HttpOptions httpOptions = new HttpOptions("https://api.example.com/users");
CloseableHttpResponse response = httpClient.execute(httpOptions);
Set<String> allowedMethods = httpOptions.getAllowedMethods(response);public class HttpTrace extends HttpRequestBase {
public HttpTrace();
public HttpTrace(URI uri);
public HttpTrace(String uri);
public String getMethod();
}HTTP TRACE method implementation for diagnostic purposes.
HttpTrace httpTrace = new HttpTrace("https://api.example.com");
CloseableHttpResponse response = httpClient.execute(httpTrace);public class HttpPatch extends HttpEntityEnclosingRequestBase {
public HttpPatch();
public HttpPatch(URI uri);
public HttpPatch(String uri);
public String getMethod();
}HTTP PATCH method implementation for partial resource updates.
HttpPatch httpPatch = new HttpPatch("https://api.example.com/users/123");
StringEntity entity = new StringEntity("{\"age\":31}");
httpPatch.setEntity(entity);
CloseableHttpResponse response = httpClient.execute(httpPatch);public class RequestBuilder {
public static RequestBuilder create(String method);
public static RequestBuilder get();
public static RequestBuilder get(URI uri);
public static RequestBuilder get(String uri);
public static RequestBuilder head();
public static RequestBuilder head(URI uri);
public static RequestBuilder head(String uri);
public static RequestBuilder patch();
public static RequestBuilder patch(URI uri);
public static RequestBuilder patch(String uri);
public static RequestBuilder post();
public static RequestBuilder post(URI uri);
public static RequestBuilder post(String uri);
public static RequestBuilder put();
public static RequestBuilder put(URI uri);
public static RequestBuilder put(String uri);
public static RequestBuilder delete();
public static RequestBuilder delete(URI uri);
public static RequestBuilder delete(String uri);
public static RequestBuilder trace();
public static RequestBuilder trace(URI uri);
public static RequestBuilder trace(String uri);
public static RequestBuilder options();
public static RequestBuilder options(URI uri);
public static RequestBuilder options(String uri);
}public RequestBuilder setUri(URI uri);
public RequestBuilder setUri(String uri);
public RequestBuilder setHeader(Header header);
public RequestBuilder setHeader(String name, String value);
public RequestBuilder addHeader(Header header);
public RequestBuilder addHeader(String name, String value);
public RequestBuilder removeHeader(Header header);
public RequestBuilder removeHeaders(String name);
public RequestBuilder setEntity(HttpEntity entity);
public RequestBuilder addParameter(String name, String value);
public RequestBuilder addParameter(NameValuePair nvp);
public RequestBuilder addParameters(NameValuePair... nvps);
public RequestBuilder setCharset(Charset charset);
public RequestBuilder setConfig(RequestConfig config);
public HttpUriRequest build();Example usage:
HttpUriRequest request = RequestBuilder.post()
.setUri("https://api.example.com/users")
.setHeader("Content-Type", "application/json")
.setEntity(new StringEntity("{\"name\":\"John\"}"))
.build();
CloseableHttpResponse response = httpClient.execute(request);public interface Configurable {
RequestConfig getConfig();
}Interface for objects that can be configured with RequestConfig.
RequestConfig config = RequestConfig.custom()
.setSocketTimeout(10000)
.setConnectTimeout(10000)
.build();
HttpGet httpGet = new HttpGet("https://api.example.com");
httpGet.setConfig(config);public interface AbortableHttpRequest {
void abort() throws UnsupportedOperationException;
}Interface for requests that can be aborted.
public interface HttpExecutionAware {
boolean isAborted();
void setCancellable(Cancellable cancellable);
}Interface for execution-aware requests that can be cancelled.
public interface HttpEntity {
boolean isRepeatable();
boolean isChunked();
long getContentLength();
Header getContentType();
Header getContentEncoding();
InputStream getContent() throws IOException, UnsupportedOperationException;
void writeTo(OutputStream outstream) throws IOException;
boolean isStreaming();
void consumeContent() throws IOException;
}Interface representing an HTTP entity (request or response body).
public class StringEntity implements HttpEntity;
public class ByteArrayEntity implements HttpEntity;
public class FileEntity implements HttpEntity;
public class InputStreamEntity implements HttpEntity;
public class UrlEncodedFormEntity implements HttpEntity;Common implementations of HttpEntity for different data types.
public class EntityBuilder {
public static EntityBuilder create();
public EntityBuilder setText(String text);
public EntityBuilder setBinary(byte[] binary);
public EntityBuilder setStream(InputStream stream);
public EntityBuilder setParameters(List<NameValuePair> parameters);
public EntityBuilder setParameters(NameValuePair... parameters);
public EntityBuilder setFile(File file);
public EntityBuilder setContentType(ContentType contentType);
public EntityBuilder setContentEncoding(String contentEncoding);
public EntityBuilder chunked();
public EntityBuilder gzipCompress();
public HttpEntity build();
}Builder for creating HTTP entities with different content types and encoding options.
HttpEntity entity = EntityBuilder.create()
.setText("{\"name\":\"John\",\"age\":30}")
.setContentType(ContentType.APPLICATION_JSON)
.build();
HttpPost httpPost = new HttpPost("https://api.example.com/users");
httpPost.setEntity(entity);Install with Tessl CLI
npx tessl i tessl/maven-org-apache-httpcomponents--httpclient