Las cookies persistentes de Android HttpClient

ACTUALIZACIÓN: esta pregunta y sus respuestas ya no deberían recomendarse a nadie que lea esto. Android ya no recomienda HttpClient (léase: obsoleto), y en su lugar recomienda HttpUrlConnection . Un buen ejemplo de bibliotecas para usar ahora, son Retrofit y OkHttp . En el contexto de esta pregunta, las cookies se pueden guardar, almacenar y entregar con consultas posteriores. Esto no se maneja de forma transparente. Con OkHttp puedes usar Interceptores .

Tengo una aplicación de Android con múltiples intenciones.

El primer bash es un formulario de inicio de sesión, los bashs posteriores dependen de las cookies proporcionadas desde el proceso de inicio de sesión.

El problema que estoy teniendo es que las cookies no parecen persistir en los bashs. Estoy creando nuevos HttpClients en cada bash (inicialmente intenté transmitir Parcelable a cada bash, que no funcionó tan bien).

¿Alguien tiene algún consejo para hacer que las cookies persistan en todos los bashs?

Puedes hacer lo que @Emanuel sugirió o puedes pasar el BasicHttpContext entre los HttpClients que estás creando.

Ejemplo de uso de contexto y cookies, complete el código aquí

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

No crees nuevos HttpClients; esto borrará las cookies. Reutilice un solo HttpClient.

Haga que su httpClient sea una clase singleton.

define HttpClient en la clase Application y usa la actividad.

en aplicación

 public class AAA extends Application { public HttpClient httpClient; httpClient = new DefaultHttpClient(); 

en la actividad

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