在我的应用程序中,我从HttpGet请求中获取了两个cookie,并将它们存储在CookieManager中,如下所示:
//Clear old cookies
CookieManager.getInstance().removeAllCookie();
CookieSyncManager.getInstance().sync();
//Save the two cookies: auth token and session info
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain();
CookieManager.getInstance().setCookie("http://alpha.mydomainname.com", cookieString);
}
System.out.println(CookieManager.getInstance().hasCookies()); //Prints false in 2.3, true in 4.0.3
CookieSyncManager.getInstance().sync();
System.out.println(CookieManager.getInstance().hasCookies()); //Also prints false in 2.3 and true in 4.0.3
}我在两个不同的设备上测试了相同的代码,有趣的是,cookies在4.0.3中被正确设置(并在应用程序的启动之间传输),而在2.3.3中却没有。当我说它们没有设置时,我的意思是当我提供URL时,hasCookies()返回false,getCookie()也返回null。
调用setCookie时,我尝试了Cookie URL的所有可能组合:"http://alpha.mydomainname.com"“、"http://www.mydomainname.com"”、"http://mydomainname.com"“、"mydomainname.com”、"alpha.mydomainname.com“、".mydomainname.com”、"www.mydomainname.com",但都不起作用。请帮助。
发布于 2014-08-05 08:42:26
我最近遇到了类似的问题,下面的解决方案对我有效。我在开始时创建/获取CookieSyncManager和CookieManager的实例,并在整个代码中使用它们,而不是再次创建新实例。我还必须尝试在正确的域上设置cookie -我必须将其设置为出现在其中一个重定向中的域。
final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(context);
final CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
//Save the two cookies: auth token and session info
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain();
cookieManager.setCookie("http://mydomainname.com", cookieString);
}
cookieSyncManager.sync();
}发布于 2019-03-14 18:15:36
我也遇到过同样的问题。如何使用setCookie方法还不是很清楚。如果你有一些带有cookie的项目(比如我的例子),你应该用一些循环来使用它:
val cookies = "key1=someValue1;key2=someValue2;key3=someValue3"
val cookiesList = cookies.split(";")
cookiesList.forEach { item ->
CookieManager.getInstance().setCookie("http://someHost.com", item)
}所以你不能像一样使用它:
CookieManager.getInstance().setCookie("http://someHost.com", "key1=someValue1;key2=someValue2;key3=someValue3")发布于 2016-05-03 19:32:40
cookie不能包含分号,因为分号表示内部cookie的分隔符。
https://stackoverflow.com/questions/11700310
复制相似问题