私のアプリケーションでは、HttpGet リクエストから 2 つの 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
}
私は 2 つの異なるデバイスで同じコードをテストしていますが、4.0.3 では Cookie が正しく設定されています (また、アプリケーションの起動間で転送されます) が、2.3.3 では正しく設定されていません。設定されていないというのは、URL を指定すると、hasCookies() が false を返し、getCookie() が null を返すことを意味します。
setCookie を呼び出すときに、Cookie URL の可能なすべての組み合わせを試しました。 mydomainname.com」、「alpha.mydomainname.com」、「.mydomainname.com」、「www.mydomainname.com」、どれも機能しません。助けてください。