在Android中使用android.webkit.CookieManager存储会话Cookie

3
我使用Volley库来执行我的应用程序请求。现在我真的需要按照以下顺序执行一些操作:
  • 使用Volley库发送POST请求
  • 我收到一个带有会话Cookie的204响应
  • 我需要设置该Cookie以便与WebViews一起使用
我需要使用Volley执行第一个请求,因为响应包含下一个请求的URI标头。然后我需要捕获该标头。
问题是我无法使用CookieManager保存会话Cookie,因为如doc所述:“正在设置的Cookie不能已过期,也不能是会话Cookie,否则将被忽略”。
有没有办法将该Cookie存储以供稍后在WebViews中使用?
1个回答

3

奇怪的是,文档要么过时,要么完全错误,看起来CookieManager可以毫无问题地保存会话cookie。(这里是bug报告

以下代码片段适用于我:

private void syncCookie(String domain, Cookie sessionCookie) {
    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeSessionCookie();
    String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
    cookieManager.setCookie(domain, cookieString);
    CookieSyncManager.getInstance().sync();
}

1
你说得对。文档已经过时了!我看到cookie已经正确存储了!非常感谢。 - Massimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接