Set-Cookie Google 用于 Java 的 HTTP 客户端库
Set-Cookie with Google HTTP Client Library for Java
我刚开始使用 Google HTTP Client Library for Java,我非常喜欢它。但是,我不知道是否有一种简单的方法来处理服务器发送 header Set-Cookie 的情况。我查看了文档、示例代码和 Javadoc,但什么也没看到,所以我开始实施自己的解决方案。然而,这个过程似乎很常见,我认为 Google 会为每个人实施一个解决方案。
服务器发送类似:
Set-Cookie: uid=ef308bd9-4580-4ef0-8cdd-2b09f383419e; Expires=Tue, 31 Dec 2199 23:59:59 GMT; Domain=mydomain.com; Path=/
我的客户必须手动解析所有内容:
String[] parts = cookie.split(";");
if (parts.length > 0) {
Pattern p = Pattern.compile("([^\s=]*)=(.*)");
Matcher m = p.matcher(parts[0]);
if (m.matches()) {
Cookie cookie = new Cookie(m.group(1), m.group(2));
if (parts.length > 1) {
for (int i = 1; i < parts.length; i++) {
// parse and set "Expires", "Max-Age", "Domain", "Path",
// "Secure", "HttpOnly", etc.
}
}
}
}
是否有任何库方法可以处理这些东西而不是我自己实现它?
要解析 cookie,请使用
java.net.HttpCookie.parse(String header)
仍然需要存储已解析的 cookie 并使用 Cookie header 发送它们。虽然很奇怪 Google 没有在他们的库中提供它,但通过互联网处理 cookie 有很多解决方案。
我刚开始使用 Google HTTP Client Library for Java,我非常喜欢它。但是,我不知道是否有一种简单的方法来处理服务器发送 header Set-Cookie 的情况。我查看了文档、示例代码和 Javadoc,但什么也没看到,所以我开始实施自己的解决方案。然而,这个过程似乎很常见,我认为 Google 会为每个人实施一个解决方案。
服务器发送类似:
Set-Cookie: uid=ef308bd9-4580-4ef0-8cdd-2b09f383419e; Expires=Tue, 31 Dec 2199 23:59:59 GMT; Domain=mydomain.com; Path=/
我的客户必须手动解析所有内容:
String[] parts = cookie.split(";");
if (parts.length > 0) {
Pattern p = Pattern.compile("([^\s=]*)=(.*)");
Matcher m = p.matcher(parts[0]);
if (m.matches()) {
Cookie cookie = new Cookie(m.group(1), m.group(2));
if (parts.length > 1) {
for (int i = 1; i < parts.length; i++) {
// parse and set "Expires", "Max-Age", "Domain", "Path",
// "Secure", "HttpOnly", etc.
}
}
}
}
是否有任何库方法可以处理这些东西而不是我自己实现它?
要解析 cookie,请使用
java.net.HttpCookie.parse(String header)
仍然需要存储已解析的 cookie 并使用 Cookie header 发送它们。虽然很奇怪 Google 没有在他们的库中提供它,但通过互联网处理 cookie 有很多解决方案。