49 votes

Comment puis-je obtenir les cookies de HttpClient ?

J'utilise HttpClient 4.1.2

 HttpGet httpget = new HttpGet(uri); 
HttpResponse response = httpClient.execute(httpget);

Alors, comment puis-je obtenir les valeurs des cookies ?

62voto

Alex Points 1864

Je ne sais pas pourquoi la réponse acceptée décrit une méthode getCookieStore() qui n'existe pas. C'est inexact.

Vous devez créer un magasin de cookies au préalable, puis créer le client à l'aide de ce magasin de cookies. Ensuite, vous pouvez vous référer plus tard à ce magasin de cookies pour obtenir une liste de cookies.

 /* init client */
HttpClient http = null;
CookieStore httpCookieStore = new BasicCookieStore();
HttpClientBuilder builder = HttpClientBuilder.create().setDefaultCookieStore(httpCookieStore);
http = builder.build();

/* do stuff */
HttpGet httpRequest = new HttpGet("http://stackoverflow.com/");
HttpResponse httpResponse = null;
try {httpResponse = http.execute(httpRequest);} catch (Throwable error) {throw new RuntimeException(error);}

/* check cookies */
httpCookieStore.getCookies();

14voto

Kovács Imre Points 715

Encore une pour faire démarrer d'autres personnes, voyant des méthodes inexistantes se gratter la tête...

 import org.apache.http.Header;
import org.apache.http.HttpResponse;

Header[] headers = httpResponse.getHeaders("Set-Cookie");
for (Header h : headers) {
    System.out.println(h.getValue().toString());  
}

Cela imprimera les valeurs des cookies. La réponse du serveur peut avoir plusieurs Set-Cookie , vous devez donc récupérer un tableau de Header s

6voto

sermojohn Points 19

Sur la base de l'exemple de la question initiale, le moyen d'accéder au CookieStore après l'exécution d'une requête HTTP consiste à utiliser l'objet d'état d'exécution HttpContext

HttpContext référencera un magasin de cookies (nouveau si aucun CookieStore n'a été spécifié dans HttpClientBuilder) après l'exécution d'une requête.

 HttpClientContext context = new HttpClientContext();
CloseableHttpResponse response = httpClient.execute(request, context);
CookieStore cookieStore = context.getCookieStore();

Ceci s'applique sur httpcomponents-client:4.3+ lorsque le ClosableHttpClient été introduit.

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