【发布时间】:2019-09-11 15:03:06
【问题描述】:
我正在调用一个服务来获取像这样的 JSONArray 的 Cookies
{"domain":"blabla.com","expirationDate":1896127200,"hostOnly":false,"httpOnly":false,"name":"__ssid","path":"\/","sameSite":"no_restriction","secure":false,"session":false,"storeId":"0","value":"392997aa-ce67-4d96-a73d-de0ad794f7bf","id":1}
然后像这样解析这些cookie
Cookie cookie = new Cookie.Builder()
.domain(checkDomain(jsonObject.optString("domain")))
.expiresAt(jsonObject.optLong("expirationDate"))
.name(jsonObject.optString("name"))
.path(jsonObject.optString("path"))
.value(jsonObject.optString("value"))
.build();
然后像这样注入cookie
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.setAcceptThirdPartyCookies(webView, true);
} else {
cookieManager.setAcceptCookie(true);
}
cookieManager.removeAllCookie();
if (cookies != null) {
for (Cookie cookie : cookies) {
String cookieString = cookie.name() + "=" + cookie.value() + "; domain=" + cookie.domain();
cookieManager.setCookie(cookie.domain(), cookieString);
CookieSyncManager.getInstance().sync();
}
}
但是当我将https://blabla.com 加载到 WebView cookie 中时,cookie 不起作用,我是否遗漏了什么?
请帮忙
【问题讨论】:
-
对我的回答有任何批评吗?
-
cookie.domain()对于数组中的多个值是否相同?如果是这样,它将像 Hashmap 一样被替换。请参阅docs 了解更多信息。