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
- ¿Apoya Android varias solicitudes HTTP al mismo tiempo?
- La autenticación de Android HttpClient siempre devuelve código 401
- Cookie Android HttpClient
- La invocación de Apache DefaultHttpClient resulta en "java.lang.RuntimeException: Stub!"
- Android UnknownHostException: ¿hay una manera de establecer el tiempo de espera?
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()); } } });
- ¿Hay alguna forma de obtener el progreso de subida correctamente con HttpUrlConncetion?
- Httpclient redirecciona android
- Android HttpClient no utiliza configuración de proxy del sistema
- HttpClient ejecutar sigue dando ConnectTimeoutException
- Inicie sesión en facebook en android utilizando REST API
- Obtener el nombre de archivo sugerido de org.apache.http.HttpResponse
- Android WebView.postUrl () que muestra la pantalla en blanco al publicar en la URL HTTPS
- Java.net.SocketException: recvfrom falló: ECONNRESET (Conexión restablecida por pares) Más de WIFI
¿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=/
- Clase duplicada encontrada cuando el mismo nombre de clase bajo prueba y androidTest
- Wearable no instalar la aplicación (criterios de funcionalidad de Android Wear)