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

cookie-management.mddocs/

Cookie Management

Apache HttpClient provides comprehensive HTTP cookie handling with storage, expiration management, and policy enforcement for session-based applications and web services integration.

Cookie Interface

Cookie

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.

ClientCookie

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.

SetCookie

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.

SetCookie2

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.

Cookie Store

CookieStore Interface

public interface CookieStore {
    void addCookie(Cookie cookie);
    List<Cookie> getCookies();
    boolean clearExpired(Date date);
    void clear();
}

Interface for storing and managing HTTP cookies.

BasicCookieStore

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

Cookie Implementations

BasicClientCookie

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

BasicClientCookie2

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.

Cookie Specifications

CookieSpec Interface

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.

CookieOrigin

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

Cookie Specification Registry

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.

Cookie Specification Providers

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

Cookie Attribute Handlers

CookieAttributeHandler

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.

CommonCookieAttributeHandler

public interface CommonCookieAttributeHandler extends CookieAttributeHandler {
    String getAttributeName();
}

Extended interface for common cookie attribute handlers.

Cookie Utilities

Cookie Comparators

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

Cookie Context Management

HttpClientContext Cookie Methods

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

Cookie Configuration

Disabling Cookie Management

CloseableHttpClient httpClient = HttpClients.custom()
    .disableCookieManagement()
    .build();

Custom Cookie Store

CookieStore customCookieStore = new BasicCookieStore();

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

Request-Level Cookie Configuration

RequestConfig config = RequestConfig.custom()
    .setCookieSpec(CookieSpecs.STANDARD)
    .build();

HttpGet httpGet = new HttpGet("https://api.example.com");
httpGet.setConfig(config);

Types

Cookie Specification Names

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.

Exception Classes

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

docs

authentication.md

client-configuration.md

connection-management.md

cookie-management.md

http-methods.md

index.md

response-handling.md

tile.json