2011-06-07 13 views
33

Estoy usando HttpClient 4.1.1 para probar la API REST de mi servidor.Cómo manejar la sesión en HttpClient 4.1

Puedo lograr iniciar sesión parece funcionar bien, pero cuando intento hacer cualquier otra cosa, estoy fallando.

Es muy probable que tenga problemas para configurar la cookie en la próxima solicitud.

Aquí está mi código actualmente:

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); 

¿Hay una mejor manera de administrar la configuración de sesión/galletas en el paquete HttpClient?

Respuesta

64

La forma correcta es preparar un CookieStore que debe configurar en el HttpContext que a su vez pasar en cada llamada 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 caso de sesión expirada ¿qué ocurre? –

Cuestiones relacionadas