Android DefaultHttpClient HttpResponse falta el campo de encabezado Set-Cookie

Tengo un servidor que utiliza la seguridad de primavera recordar-me-autenticación a la que inicio de sesión utilizando Android DefaultHttpClient en un método POST. Soy capaz de iniciar sesión con éxito e incluso capaz de recuperar las cookies de sesión creada (En mi caso una cookie jsessionid y una seguridad de primavera me recuerda cookie).

Pero lo más extraño es después de ejecutar el método POST como

mResponse = mDefaultHttpClient.execute(mHttpPost) 

Soy capaz de recuperar las cookies, pero sólo usando el método getCookieStore en mi DefaultHttpClient como

 mDefaultHttpClient.getCookieStore() 

No utilizar el método getAllHeaders del objeto HttpResponse

 headers = mResponse.getAllHeaders(); HeaderIterator headerIterrator = new BasicHeaderIterator(headers, null); while (headerIterrator.hasNext()) { Header header = headerIterrator.nextHeader(); headerStringBuilder.append(" " + header.getName() + ":" + header.getValue()); } Log.e("Post response headers: ", headerStringBuilder.toString()); 

Tengo algunas cabeceras de nuevo aquí (servidor, X-powered-By, fecha, Content-Type, Content-Length), pero no el encabezado Set-Cookie o algunos otros (Access-control-Allow- * etc)

¡Gracias por cualquier ayuda!

UPDATE: Parece que el DefaultHttpClient no expone algunos de los encabezados. Intenté agregar un interceptor de respuesta (como se muestra a continuación) y getAllHeaders devolvió todos los encabezados que quería. ¡Gracias por leer mi pregunta!

  mDefaultHttpClient.addResponseInterceptor(new HttpResponseInterceptor() { public void process(final HttpResponse response, final HttpContext context) throws HttpException, IOException { Header[] headers = response.getAllHeaders(); for (int i = 0; i < headers.length; i++) { Header header = headers[i]; Log.e("HTTP: ", "name: " + header.getName()); Log.e("HTTP: ", "value: " + header.getValue()); } } }); 

¿Intentaste usar HttpURLConnection en lugar de HttpClient? HttpClient, como su nombre indica, es un cliente, entonces administra las cookies para usted, HttpURLConnection no.

Doc dice que "los clientes HTTP encapsulan una gran cantidad de objetos necesarios para ejecutar peticiones HTTP mientras se manejan las cookies, la autenticación, la gestión de conexiones y otras características".

Si establece cookie en el lado del servidor, como session_start () en php, el Set-Cookie tiene show en los encabezados, pero si no tiene ninguna cookie, el Set-Cookie no se ha mostrado.

después:

 05-25 17:23:16.616: I/HTTP:(575): name: Set-Cookie 05-25 17:23:16.616: I/HTTP:(575): value: PHPSESSID=g29i01av8ddvpgsi7lpaj12lc3; path=/ 
  • Encabezado de cookie no válido: no se puede analizar el atributo expires cuando el atributo expires está vacío
  • HttpClient en Android: NoHttpResponseException causa raíz En mi proyecto, ¿está bien?
  • WebView, agrega el archivo .CSS local a una página HTML?
  • HTTP solicitudes con HttpClient demasiado lento?
  • Servicio Web SocketTimeOutException provoca inconsistencia de base de datos
  • Cancelar la descarga de archivos con httpclient y asynctask
  • Apache HttpClient 4.0 falla en el tiempo de espera para socket en Android
  • ¿Hay un HttpClient que maneja las solicitudes de almacenamiento en caché por sí solo?
  • Ayudar a construir una solicitud POST con MultipartEntity (pregunta de novato)
  • Android: uso no válido de SingleClientConnManager: conexión aún asignada
  • ¿Hay una manera de detener la ejecución de un HttpClient en un AsyncTask?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.