Android CookieManager setCookie ne pas mettre quoi que ce soit
dans mon application, j'obtiens deux biscuits à partir d'un HttpGet demande et de les stocker dans le CookieManager comme ceci:
//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
}
Je suis en essais ce même code dans les deux périphériques différents et la chose drôle est, les cookies sont définis (et également transférées entre les lancements de l'application) correctement dans 4.0.3 mais pas dans 2.3.3. Quand je dis qu'ils ne sont pas ensemble, je veux dire que hasCookies() renvoie la valeur false et aussi getCookie() retourne null quand je fournir l'URL.
J'ai essayé toutes les combinaisons possibles pour le Cookie URL lors de l'appel de la fonction setCookie: "http://alpha.mydomainname.com", "http://www.mydomainname.com", "http://mydomainname.com", "mydomainname.com", "alpha.mydomainname.com", ".mydomainname.com", "www.mydomainname.com" aucun d'entre eux fonctionne. S'il vous plaît aider.
J'ai besoin d'un peu plus de tente pour être sûr, mais je suis la recherche de quelque chose comme ce qui suit: si l'en-tête d'Expiration est définie, le cookie enregistre sur 2.3.3 mais pas 4.0.4, alors que si l'Expiration est manquant, le cookie enregistre sur 4.0.4 mais pas 2.3.3.
Avez-vous résolu votre problème? Je suis confronté à la même chose ici....
OriginalL'auteur Ayberk Özgür | 2012-07-28
Vous devez vous connecter pour publier un commentaire.
J'ai récemment eu un problème similaire, et la solution suivante a fonctionné pour moi. J'ai créer/obtenir des instances de CookieSyncManager et CookieManager au début, et de les utiliser dans le code, au lieu de créer de nouvelles instances de nouveau. J'ai également eu à expérimenter avec réglage du cookie sur le domaine correct - j'ai dû mettre au domaine qui apparaît dans l'un des redirections.
OriginalL'auteur synapseError
J'ai aussi rencontré quelques comportements étranges avec
CookieManager
, j'ai fini avec une solution qui est une solution de contournement, mais il fonctionne.Au lieu d'utiliser
CookieManager
je viens d'utiliser le cookie http en-têtes, de manière par exemple à l'aide deHttpUrlConnection
il peut ressembler à:Bien sûr, si vous avez besoin de persister ces cookies, vous devrez le faire wourself et sauver leur valeur quelque part pour les utiliser plus tard...
OriginalL'auteur Inon Stelman
J'ai trouvé un plugin qui utilise un thread d'arrière-plan pour créer des cookies.
Testé sur iOS 9 et Android 5:
https://github.com/kristianhristov/cordova-cookie-master
OriginalL'auteur Roberto von Schoettler
Le cookie ne peut pas inclure le point-virgule, car le point-virgule signifie séparateur int cookies.
OriginalL'auteur AnswerZhao