37 votes

Cookies persistants Android HttpClient

J'ai une application Android aux intentions multiples.

La première intention est un formulaire de connexion, les intentions suivantes reposent sur les cookies fournis à partir du processus de connexion.

Le problème que je rencontre est que les cookies ne semblent pas persister de manière intentionnelle. Je crée de nouveaux clients HTTP dans chaque intention (j'ai d'abord essayé de le transmettre à chaque intention, ce qui ne fonctionnait pas très bien).

Quelqu'un a-t-il des conseils pour faire en sorte que les cookies persistent malgré les intentions?

31voto

Aaron Saunders Points 20454

Vous pouvez faire ce que @Emmanuel a suggéré ou vous pouvez passer à la BasicHttpContext entre les HttpClients vous êtes en train de créer.

Exemple d'Utilisation de contexte et les cookies, code complet ici

    HttpClient httpclient = new DefaultHttpClient();

    // Create a local instance of cookie store
    CookieStore cookieStore = new BasicCookieStore();

    // Create local HTTP context
    HttpContext localContext = new BasicHttpContext();
    // Bind custom cookie store to the local context
    localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

    HttpGet httpget = new HttpGet("http://www.google.com/", localContext);

22voto

Emmanuel Points 6262

Ne créez pas de nouveaux clients HTTP; cela effacera les cookies. Réutilisez un seul HttpClient.

4voto

user569873 Points 199

Faites de votre httpClient une classe singleton.

4voto

panicstyle Points 51

définir HttpClient dans la classe Application et utiliser l'activité.

en application

 public class AAA extends Application {
    public HttpClient httpClient; 

    httpClient = new DefaultHttpClient(); 
 

en activité

 AAA aaa = (AAA)getApplication();
httpClient = app.httpClient;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X