Cookie persistant magasin à l'aide de okhttp 2 sur Android
Dans mon application Android, je suis en train de passer de android-async-http
à okhttp
qui prend en charge async réseau sind version 2.0. Alors que l'ancien est livré avec une mise en œuvre d'un cookie persistant de stockage, je ne sais pas comment la mettre quelque chose comme ça pour okhttp
.
Dans mon application j'ai une connexion de routine au cours de laquelle un get
demande est envoyée que, en cas de succès, devrait définir un cookie. Ce cookie doit être ajouté à toutes les demandes de réseau et doit survivre au redémarrage de l'application.
J'ai trouvé la réponse suivante, indiquant que le morceau de code suivant, s'il est exécuté quelque part dans l'application, active les cookies persistants de la gestion et de okhttp
serait de l'utiliser:
CookieManager cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(cookieManager);
Cependant, pour moi, il ne fonctionne pas. Est le CookieManager
la bonne façon de faire? Comment pourrais-je suivre les cookies ont été définies et stockées à plus de déboguer le problème?
OriginalL'auteur janoliver | 2014-08-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez configurer votre CookieStore dans le OkHttp client avec le code suivant:
J'ai fait un gist avec ma mise en œuvre d'une persistante CookieStore essayer d'améliorer janoliver réponse en deux points:
vous devriez être en utilisant la même instance toutes les demandes. Vérifier Jakes de Wharton réponse à ce post (plus.google.com/118239425803358296962/posts/5nzAvPaitHu)
C'est une solution plus propre que la accepté de répondre. Je l'utilise avec de Rénovation et il fonctionne très bien.
Proguard et la réflexion ne se mélange pas bien, donc, l'ajout de " - gardez public class package.SerializableHttpCookie { * ; } " de votre proguard config aide.
pour okhttp3, voir: stackoverflow.com/questions/34881775/...
OriginalL'auteur franmontiel
De mettre le code dans un personnalisé
Application
'sonCreate
fonction permet de résoudre le problème. Il fonctionne maintenant.J'ai réussi à obtenir les cookies persistants avec
okhttp
avec le suivantCookieStore
, qui est en partie copié à partir de l'une desandroid-async-http
. Il travaille avec l'API lvl 9 et peut-être moins.La
SerializableHttpCookie.java
:Gardez à l'esprit que cette solution ne survivra pas au redémarrage de l'application. Voici une réponse avec quelques code de base de persister dans SharedPreferences, stackoverflow.com/questions/12349266/...
Oui, les utilisateurs savent et veulent rester connecté à mon service. Ils peuvent, bien sûr, connecter manuellement à tout moment.
Lavigne: Pour une raison quelconque, il a cessé de travailler maintenant, mais je vais regarder dans votre lien. Merci!!!!
Grande réponse, mais en fonction de cette réponse (stackoverflow.com/a/1063760/980387) de l'URI ne doit pas être utilisé si le domaine et le chemin des attributs des cookies sont disponibles. Également dans SerializedCookie la HttpCookie httpOnly attribut n'est pas sérialisé (elle n'a pas accesseurs, ni des mutateurs). J'ai préparé une réponse (stackoverflow.com/a/27161496/980387) qui permet de résoudre ces deux problèmes.
OriginalL'auteur janoliver