当我的应用启动时,我将登录请求发布到Web服务并接收Cookie。我想在我的WebView中使用该cookie,我使用以下代码:

List<Cookie> cookies = this.get_my_cookies_from_somewhere();
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

for (Cookie cookie : cookies) {
    String rawUrl = (cookie.isSecure() ? "https" : "http") + "://" + cookie.getDomain() + cookie.getPath();
    cookieManager.setCookie(rawUrl, cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain());
}
cookieSyncManager.sync();
.

理想情况下,Cookie类或某些实用程序类构建Cookie URL和“set-cookie”标题值。这样的事情是否存在?

我尝试了rfc2109spec和rfc2965spec,但它们生成“cookie”标题,而不是“set-cookie”标题。

有帮助吗?

解决方案

The preferred method appears to be to send the Headers from your Response directly to the CookieManager. I'm basing this on code I found from Romain Guy:

final CookieManager cookieManager = CookieManager.getInstance();
final HttpResponse response = ...
final Header[] cookies = response.getHeaders("set-cookie");
for (Header cooky : cookies) {
    cookieManager.setCookie(url, cooky.getValue());
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top