我已经看到很多关于在 App Engine 上使用带有 url fetch 的 cookie 的问题,但是很多人做错了,并且在 Java App Engine 上没有确认为有效的解决方案。
我想做的就是:
- 提出一项要求
- 从该请求中获取 cookie。
- 使用这些 cookie 发出第二个请求。
它能有多难??
这在开发服务器上很容易做到,因为开发服务器会自动跨请求复制 cookie——而且实际上不可能阻止它这样做。但真正的 App Engine urlfetch 服务不会这样做。
我已经看到很多关于在 App Engine 上使用带有 url fetch 的 cookie 的问题,但是很多人做错了,并且在 Java App Engine 上没有确认为有效的解决方案。
我想做的就是:
它能有多难??
这在开发服务器上很容易做到,因为开发服务器会自动跨请求复制 cookie——而且实际上不可能阻止它这样做。但真正的 App Engine urlfetch 服务不会这样做。
利用
new HTTPRequest(url, HTTPMethod.GET, fetchOptions.doNotFollowRedirects())
创建请求对象。
出于某种原因,这doNotFollowRedirects()
是必不可少的。我不明白为什么。
然后从响应中获取 set-cookie 标头(名称为 的标头equalsIgnoreCase("Set-Cookie")
)并创建相应的Cookie
标头 - 修剪每个 Set-Cookie 标头中分号后的所有内容(如果有),然后将所有 cookie 连接在一起;
作为分隔符.
这不能正确处理到期等问题,但这对于大多数用途来说应该足够了。