在android.webkit.CookieManager中存储会话cookie

时间:2014-09-11 07:48:46

标签: android cookies webview android-volley

我使用Volley库来执行我的应用程序的请求。现在我真的需要按照这个顺序执行一些操作:

  • 使用Volley库的POST请求
  • 我收到了一个带有会话cookie的204响应
  • 我需要将该Cookie设置为与WebViews一起使用

我需要使用Volley执行第一个请求,因为响应有一个包含下一个请求的uri的标头。比我需要捕获那个标题。

问题是我无法使用CookieManager保存会话cookie,因为doc说:“正在设置的Cookie不得过期且不得为会话Cookie,否则它将被忽略。“。

有没有办法存储该cookie以供以后用于WebViews?

1 个答案:

答案 0 :(得分:3)

奇怪的是,文档已过时或完全不正确,似乎CookieManager将保存会话cookie而不会出现任何问题。 (Here's the bug report

这段代码对我有用:

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();
}