java android cookies httpclient

java - Las cookies persistentes de Android HttpClient



(4)

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 intento es un formulario de inicio de sesión, los intentos 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 intentos. Estoy creando nuevos HttpClients en cada intento (inicialmente intenté transmitir Parcelable a cada intento, que no funcionó tan bien).

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


Haga que su httpClient sea una clase singleton.


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


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


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;