2011-06-07 4 views
33

J'utilise HttpClient 4.1.1 pour tester l'API REST de mon serveur.Comment gérer la session dans HttpClient 4.1

Je peux réussir à me connecter semble fonctionner correctement, mais quand j'essaie de faire autre chose, je suis défaillant.

J'ai probablement eu un problème lors de la configuration du cookie lors de la prochaine demande.

Voici mon code actuellement:

HttpGet httpGet = new HttpGet(<my server login URL>); 
httpResponse = httpClient.execute(httpGet) 
sessionID = httpResponse.getFirstHeader("Set-Cookie").getValue(); 
httpGet.addHeader("Cookie", sessionID); 
httpClient.execute(httpGet); 

est-il une meilleure façon de gérer les paramètres de session/cookies dans le package HttpClient?

Répondre

64

La méthode correcte consiste à préparer un CookieStore que vous devez définir dans le HttpContext que vous transmettez à chaque appel HttpClient#execute().

HttpClient httpClient = new DefaultHttpClient(); 
CookieStore cookieStore = new BasicCookieStore(); 
HttpContext httpContext = new BasicHttpContext(); 
httpContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); 
// ... 

HttpResponse response1 = httpClient.execute(method1, httpContext); 
// ... 

HttpResponse response2 = httpClient.execute(method2, httpContext); 
// ... 
+14

En cas de session expirée, que s'est-il passé? –

Questions connexes