当我的应用程序启动时,我向网络服务发送登录请求并收到一个 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 类或某些实用程序类构建 CookieManager 所需的 cookie url 和“Set-Cookie” header 值。有这种东西吗?
我尝试了 RFC2109Spec 和 RFC2965Spec,但它们生成的是“Cookie” header ,而不是“Set-Cookie” header 。
最佳答案
首选方法似乎是将标题从您的响应直接发送到 CookieManager。我基于 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());
}
关于java - Android 中是否有用于将 Cookie 格式化为 CookieManager 值的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5025786/