Apache HttpComponents Client is a library of components for building client side HTTP services
—
Apache HttpClient provides comprehensive HTTP cookie handling with storage, expiration management, and policy enforcement for session-based applications and web services integration.
public interface Cookie {
String getName();
String getValue();
String getComment();
String getCommentURL();
Date getExpiryDate();
boolean isPersistent();
String getDomain();
String getPath();
int[] getPorts();
boolean isSecure();
int getVersion();
}Basic interface representing an HTTP cookie with standard attributes.
public interface ClientCookie extends Cookie {
String COMMENT_ATTR = "comment";
String COMMENTURL_ATTR = "commenturl";
String DISCARD_ATTR = "discard";
String DOMAIN_ATTR = "domain";
String EXPIRES_ATTR = "expires";
String MAX_AGE_ATTR = "max-age";
String PATH_ATTR = "path";
String PORT_ATTR = "port";
String SECURE_ATTR = "secure";
String VERSION_ATTR = "version";
String getAttribute(String name);
boolean containsAttribute(String name);
}Extended cookie interface with client-specific attributes and methods.
public interface SetCookie extends Cookie {
void setValue(String value);
void setComment(String comment);
void setExpiryDate(Date expiryDate);
void setDomain(String domain);
void setPath(String path);
void setSecure(boolean secure);
void setVersion(int version);
}Interface for mutable cookies that can be modified.
public interface SetCookie2 extends SetCookie {
void setCommentURL(String commentURL);
void setPorts(int[] ports);
void setDiscard(boolean discard);
}Extended SetCookie interface with additional RFC 2965 attributes.
public interface CookieStore {
void addCookie(Cookie cookie);
List<Cookie> getCookies();
boolean clearExpired(Date date);
void clear();
}Interface for storing and managing HTTP cookies.
public class BasicCookieStore implements CookieStore {
public BasicCookieStore();
public synchronized void addCookie(Cookie cookie);
public synchronized List<Cookie> getCookies();
public synchronized boolean clearExpired(Date date);
public synchronized void clear();
}Basic thread-safe implementation of cookie store.
CookieStore cookieStore = new BasicCookieStore();
// Add cookies manually
BasicClientCookie cookie = new BasicClientCookie("sessionId", "abc123");
cookie.setDomain("example.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);
// Use with HTTP client
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();
// Cookies are automatically managed for subsequent requests
HttpGet httpGet = new HttpGet("https://example.com/api/data");
CloseableHttpResponse response = httpClient.execute(httpGet);public class BasicClientCookie implements SetCookie, ClientCookie {
public BasicClientCookie(String name, String value);
public String getName();
public String getValue();
public void setValue(String value);
public String getComment();
public void setComment(String comment);
public String getCommentURL();
public Date getExpiryDate();
public void setExpiryDate(Date expiryDate);
public boolean isPersistent();
public String getDomain();
public void setDomain(String domain);
public String getPath();
public void setPath(String path);
public boolean isSecure();
public void setSecure(boolean secure);
public int getVersion();
public void setVersion(int version);
public void setAttribute(String name, String value);
public String getAttribute(String name);
public boolean containsAttribute(String name);
}Basic implementation of a client-side cookie.
BasicClientCookie cookie = new BasicClientCookie("username", "john");
cookie.setDomain("api.example.com");
cookie.setPath("/");
cookie.setExpiryDate(new Date(System.currentTimeMillis() + 3600000)); // 1 hour
cookie.setSecure(true);public class BasicClientCookie2 extends BasicClientCookie implements SetCookie2 {
public BasicClientCookie2(String name, String value);
public int[] getPorts();
public void setPorts(int[] ports);
public String getCommentURL();
public void setCommentURL(String commentURL);
public void setDiscard(boolean discard);
}RFC 2965 compliant cookie implementation with additional attributes.
public interface CookieSpec {
int getVersion();
List<Cookie> parse(Header header, CookieOrigin origin) throws MalformedCookieException;
void validate(Cookie cookie, CookieOrigin origin) throws MalformedCookieException;
boolean match(Cookie cookie, CookieOrigin origin);
List<Header> formatCookies(List<Cookie> cookies);
Header getVersionHeader();
}Interface defining cookie specification behavior for parsing and formatting.
public final class CookieOrigin {
public CookieOrigin(String host, int port, String path, boolean secure);
public String getHost();
public String getPath();
public int getPort();
public boolean isSecure();
}Represents the origin context for cookie operations.
CookieOrigin origin = new CookieOrigin("api.example.com", 443, "/", true);public final class CookieSpecRegistry {
public CookieSpecRegistry();
public void register(String name, CookieSpecFactory factory);
public void unregister(String name);
public CookieSpec getCookieSpec(String name, HttpParams params) throws IllegalStateException;
public List<String> getSpecNames();
}Registry for cookie specification factories.
public interface CookieSpecProvider {
CookieSpec create(HttpContext context);
}Provider interface for creating cookie specifications.
Registry<CookieSpecProvider> cookieSpecRegistry = RegistryBuilder.<CookieSpecProvider>create()
.register(CookieSpecs.DEFAULT, new DefaultCookieSpecProvider())
.register(CookieSpecs.STANDARD, new RFC6265CookieSpecProvider())
.register(CookieSpecs.STANDARD_STRICT, new RFC6265CookieSpecProvider(
RFC6265CookieSpecProvider.CompatibilityLevel.STRICT, null))
.build();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieSpecRegistry(cookieSpecRegistry)
.build();public interface CookieAttributeHandler {
void parse(SetCookie cookie, String value) throws MalformedCookieException;
void validate(Cookie cookie, CookieOrigin origin) throws MalformedChallengeException;
boolean match(Cookie cookie, CookieOrigin origin);
}Interface for handling specific cookie attributes.
public interface CommonCookieAttributeHandler extends CookieAttributeHandler {
String getAttributeName();
}Extended interface for common cookie attribute handlers.
public class CookieIdentityComparator implements Comparator<Cookie> {
public int compare(Cookie c1, Cookie c2);
}
public class CookiePathComparator implements Comparator<Cookie> {
public int compare(Cookie c1, Cookie c2);
}
public class CookiePriorityComparator implements Comparator<Cookie> {
public int compare(Cookie c1, Cookie c2);
}Comparators for sorting cookies by different criteria.
List<Cookie> cookies = cookieStore.getCookies();
Collections.sort(cookies, new CookiePathComparator());public class HttpClientContext extends HttpCoreContext {
public void setCookieStore(CookieStore cookieStore);
public CookieStore getCookieStore();
public void setCookieSpecRegistry(Lookup<CookieSpecProvider> cookieSpecRegistry);
public Lookup<CookieSpecProvider> getCookieSpecRegistry();
public void setCookieSpec(CookieSpec cookieSpec);
public CookieSpec getCookieSpec();
}Context methods for managing cookies in HTTP client operations.
HttpClientContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
HttpGet httpGet = new HttpGet("https://api.example.com");
CloseableHttpResponse response = httpClient.execute(httpGet, context);
// Access cookies from the context
CookieStore contextCookieStore = context.getCookieStore();
List<Cookie> cookies = contextCookieStore.getCookies();CloseableHttpClient httpClient = HttpClients.custom()
.disableCookieManagement()
.build();CookieStore customCookieStore = new BasicCookieStore();
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultCookieStore(customCookieStore)
.build();RequestConfig config = RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD)
.build();
HttpGet httpGet = new HttpGet("https://api.example.com");
httpGet.setConfig(config);public final class CookieSpecs {
public static final String DEFAULT = "default";
public static final String STANDARD = "standard";
public static final String STANDARD_STRICT = "standard-strict";
public static final String NETSCAPE = "netscape";
public static final String IGNORE_COOKIES = "ignoreCookies";
}Constants for standard cookie specification names.
public class MalformedCookieException extends ProtocolException {
public MalformedCookieException();
public MalformedCookieException(String message);
public MalformedCookieException(String message, Throwable cause);
}
public class CookieRestrictionViolationException extends MalformedCookieException {
public CookieRestrictionViolationException(String message);
}Exceptions thrown during cookie processing.
Install with Tessl CLI
npx tessl i tessl/maven-org-apache-httpcomponents--httpclient