Android: inicie sesión en el sitio web y conserve la sesión / cookie con DefaultHttpClient

He pasado por diferentes tutoriales y este sitio web, pero no pude encontrar una solución adecuada. Por otro lado, he visto aplicaciones que inician sesión en sitios web y solicitan más información, así que estoy seguro de que hay una manera de hacer que esto funcione, pero tal vez mi enfoque sea totalmente incorrecto.

Esto es lo que estoy tratando de hacer: quiero iniciar sesión en un sitio web que necesita autenticación de usuario y luego leer y analizar sitios web a los que solo se puede acceder si el usuario está conectado. El problema: después de PUBLICAR las credenciales en el sitio web, recibo una cookie que no parece conservarse en mi HttpClient, aunque los documentos sugieren que eso debería suceder exactamente.

Aquí hay algo de mi código:

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(LOGIN_URL);

List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair(USER_FIELD, login));
nvps.add(new BasicNameValuePair(PASS_FIELD, pw));
nvps.add(new BasicNameValuePair(REMEMBERME, "on"));

httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

HttpResponse response = httpclient.execute(httpost);
HttpEntity entity = response.getEntity();

if (entity != null) {
  entity.consumeContent();
}

List<Cookie> cookies = httpclient.getCookieStore().getCookies();

Cuando envío el contenido de "cookies", todo parece estar bien (recibo una sesión):

- [version: 0][name: ASP.NET_SessionId][value: xxx][domain: xxx][path: /][expiry: null]

Como entendí, la cookie / sesión se conservará y se usará en mi HttpClient siempre que no la cierre.

Cuando lea la siguiente página (que está restringida), use este código:

HttpGet httpget2 = new HttpGet(RESTRICTED_URL);
response = httpclient.execute(httpget2);
entity = response.getEntity();
InputStream data = entity.getContent();
// data will be parsed here
if (entity != null) {
    entity.consumeContent();
}
// connection will be closed afterwards

Si envío la respuesta de la solicitud GET (usandoresponse.getStatusLine()) Recibo el mensaje "200 OK", pero al analizar el sitio que se devuelve, se muestra que el inicio de sesión se perdió (solo recupero un formulario de inicio de sesión)

Cualquier ayuda es apreciada.

Respuestas a la pregunta(4)

Su respuesta a la pregunta