📄 e141. getting the cookies from an http connection.txt
字号:
When the server wants to set a cookie in the client, it includes a response header of the form
Set-Cookie: cookie-value; expires=date; path=path; domain=domain-name; secure
cookie-value is some arbitrary string data that should be returned to the server in future URL requests. The life time of the cookie is specified by expires. If expires is not specified, the cookie expires at the end of the session. When a URL request is made, the cookie should be sent along only if domain-name matches the end of the fully-qualified host name of the URL request and path matches the beginning of the path of the URL request. If secure is specified, the cookie should be sent to the server only through HTTPS.
try {
// Create a URLConnection object for a URL
URL url = new URL("http://hostname:80");
URLConnection conn = url.openConnection();
// Get all cookies from the server.
// Note: The first call to getHeaderFieldKey() will implicit send
// the HTTP request to the server.
for (int i=0; ; i++) {
String headerName = conn.getHeaderFieldKey(i);
String headerValue = conn.getHeaderField(i);
if (headerName == null && headerValue == null) {
// No more headers
break;
}
if ("Set-Cookie".equalsIgnoreCase(headerName)) {
// Parse cookie
String[] fields = headerValue.split(";\\s*");
String cookieValue = fields[0];
String expires = null;
String path = null;
String domain = null;
boolean secure = false;
// Parse each field
for (int j=1; j<fields.length; j++) {
if ("secure".equalsIgnoreCase(fields[j])) {
secure = true;
} else if (fields[j].indexOf('=') > 0) {
String[] f = fields[j].split("=");
if ("expires".equalsIgnoreCase(f[0])) {
expires = f[1];
} else if ("domain".equalsIgnoreCase(f[0])) {
domain = f[1];
} else if ("path".equalsIgnoreCase(f[0])) {
path = f[1];
}
}
}
// Save the cookie...
}
}
} catch (MalformedURLException e) {
} catch (IOException e) {
}
Here's a sample of cookies from two websites:
B=a43ka6gu6f4n4&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT;
path=/; domain=.yahoo.com
PREF=ID=e51:TM=686:LM=86:S=BL-w0; domain=.google.com; path=/;
expires=Sun, 17-Jan-2038 19:14:07 GMT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -