public final class HttpCookie extends Object implements Cloneable
Domain, Expires, Path, and
Secure. The version of cookies in this
format is 0.
There are no accessors for the Expires attribute. When
parsed, expires attributes are assigned to the Max-Age attribute as an offset from now.
Expires timestamp
with a Max-Age duration and adds Comment and Version attributes. The version of cookies in
this format is 1.
Discard, Port, and CommentURL attributes and renames the header from Set-Cookie
to Set-Cookie2. The version of cookies
in this format is 1.
Support for the "HttpOnly" attribute specified in RFC 6265 is also included. RFC 6265 is intended to obsolete RFC 2965. Support for features from RFC 2965 that have been deprecated by RFC 6265 such as Cookie2, Set-Cookie2 headers and version information remain supported by this class.
This implementation silently discards unrecognized attributes.
| Constructor and Description |
|---|
HttpCookie(String name,
String value)
Creates a new cookie.
|
| Modifier and Type | Method and Description |
|---|---|
Object |
clone()
Creates and returns a copy of this
Object. |
static boolean |
domainMatches(String domainPattern,
String host)
Returns true if
host matches the domain pattern domain. |
boolean |
equals(Object object)
Returns true if
object is a cookie with the same domain, name and
path. |
String |
getComment()
Returns the
Comment attribute. |
String |
getCommentURL()
Returns the value of
CommentURL attribute. |
boolean |
getDiscard()
Returns the
Discard attribute. |
String |
getDomain()
Returns the
Domain attribute. |
long |
getMaxAge()
Returns the
Max-Age attribute, in delta-seconds. |
String |
getName()
Returns the name of this cookie.
|
String |
getPath()
Returns the
Path attribute. |
String |
getPortlist()
Returns the
Port attribute, usually containing comma-separated
port numbers. |
boolean |
getSecure()
Returns the
Secure attribute. |
String |
getValue()
Returns the value of this cookie.
|
int |
getVersion()
Returns the version of this cookie.
|
boolean |
hasExpired()
Returns true if this cookie's Max-Age is 0.
|
int |
hashCode()
Returns the hash code of this HTTP cookie:
|
static List<HttpCookie> |
parse(String header)
Constructs a cookie from a string.
|
void |
setComment(String comment)
Set the
Comment attribute of this cookie. |
void |
setCommentURL(String commentURL)
Set the
CommentURL attribute of this cookie. |
void |
setDiscard(boolean discard)
Set the
Discard attribute of this cookie. |
void |
setDomain(String pattern)
Set the
Domain attribute of this cookie. |
void |
setMaxAge(long deltaSeconds)
Sets the
Max-Age attribute of this cookie. |
void |
setPath(String path)
Set the
Path attribute of this cookie. |
void |
setPortlist(String portList)
Set the
Port attribute of this cookie. |
void |
setSecure(boolean secure)
Sets the
Secure attribute of this cookie. |
void |
setValue(String value)
Sets the opaque value of this cookie.
|
void |
setVersion(int newVersion)
Sets the
Version attribute of the cookie. |
String |
toString()
Returns a string representing this cookie in the format used by the
Cookie header line in an HTTP request as specified by RFC 2965 section 3.3.4. |
public HttpCookie(String name, String value)
name - a non-empty string that contains only printable ASCII, no
commas or semicolons, and is not prefixed with $. May not be
an HTTP attribute name.value - an opaque value from the HTTP server.IllegalArgumentException - if name is invalid.public static boolean domainMatches(String domainPattern, String host)
host matches the domain pattern domain.domainPattern - a host name (like android.com or localhost), or a pattern to match subdomains of a domain name (like
.android.com). A special case pattern is .local,
which matches all hosts without a TLD (like localhost).host - the host name or IP address from an HTTP request.public static List<HttpCookie> parse(String header)
header - a set-cookie or set-cookie2 header.IllegalArgumentException - if the string does not comply with cookie specification, or
the cookie name contains illegal characters, or reserved
tokens of cookie specification appearsNullPointerException - if header is nullpublic String getComment()
Comment attribute.public String getCommentURL()
CommentURL attribute.public boolean getDiscard()
Discard attribute.public String getDomain()
Domain attribute.public long getMaxAge()
Max-Age attribute, in delta-seconds.public String getName()
public String getPath()
Path attribute. This cookie is visible to all
subpaths.public String getPortlist()
Port attribute, usually containing comma-separated
port numbers. A null port indicates that the cookie may be sent to any
port. The empty string indicates that the cookie should only be sent to
the port of the originating request.public boolean getSecure()
Secure attribute.public String getValue()
public int getVersion()
public boolean hasExpired()
public void setComment(String comment)
Comment attribute of this cookie.public void setCommentURL(String commentURL)
CommentURL attribute of this cookie.public void setDiscard(boolean discard)
Discard attribute of this cookie.public void setDomain(String pattern)
Domain attribute of this cookie. HTTP clients send
cookies only to matching domains.public void setMaxAge(long deltaSeconds)
Max-Age attribute of this cookie.public void setPath(String path)
Path attribute of this cookie. HTTP clients send cookies
to this path and its subpaths.public void setPortlist(String portList)
Port attribute of this cookie.public void setSecure(boolean secure)
Secure attribute of this cookie.public void setValue(String value)
public void setVersion(int newVersion)
Version attribute of the cookie.IllegalArgumentException - if v is neither 0 nor 1public Object clone()
ObjectObject. The default
implementation returns a so-called "shallow" copy: It creates a new
instance of the same class and then copies the field values (including
object references) from this instance to the new instance. A "deep" copy,
in contrast, would also recursively clone nested objects. A subclass that
needs to implement this kind of cloning should call super.clone()
to create the new instance and then create deep copies of the nested,
mutable objects.public boolean equals(Object object)
object is a cookie with the same domain, name and
path. Domain and name use case-insensitive comparison; path uses a
case-sensitive comparison.equals in class Objectobject - the object to compare this instance with.true if the specified object is equal to this Object; false otherwise.Object.hashCode()public int hashCode()
name.toLowerCase(Locale.US).hashCode()
+ (domain == null ? 0 : domain.toLowerCase(Locale.US).hashCode())
+ (path == null ? 0 : path.hashCode())
hashCode in class ObjectObject.equals(java.lang.Object)public String toString()
Cookie header line in an HTTP request as specified by RFC 2965 section 3.3.4.
The resulting string does not include a "Cookie:" prefix or any version information.
The returned String is not suitable for passing to parse(String): Several of
the attributes that would be needed to preserve all of the cookie's information are omitted.
The String is formatted for an HTTP request not an HTTP response.
The attributes included and the format depends on the cookie's version: