¿Puede decirme cómo almacenar jsessionid en una cookie, por lo que se puede pasar al servlet con una solicitud posterior? Estoy usando la versión 4.0.3 de Apache HttpClient. Todas las soluciones que he encontrado explican cómo hacerlo con HttpClient 3.1. He leído el tutorial y lo intenté, pero no funciona.Apache HttpClient 4.0.3 - ¿Cómo configuro la cookie con el ID de sesión para la solicitud POST
HttpPost httppost = new HttpPost(postData);
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", getSessionId());
cookieStore.addCookie(cookie);
client.setCookieStore(cookieStore);
response = client.execute(httppost);
Editar - más explicaciones
estoy conectando a los servlets escritos por el amigo. He iniciado sesión y obtuve jsessionid
. Ahora quiero enviar otra solicitud y necesito pasar jsessionid para fines de autorización. Servlet funciona bien porque usé java HttpURLConnection, configuré la cookie, la pasé y funcionó. Ahora, con HttpClient, no recibo excepciones, pero el código de retorno del servlet de mi amigo indica que no hubo sessionid en la solicitud.
Otra edición - Tengo una solución Establecí el parámetro del encabezado de solicitud y funcionó. Servlet reconoció sessionid.
httppost.setHeader("Cookie", "JSESSIONID="+ getSessionId());
Ahora mi pregunta es: ¿Es este método correcto?
Podría decirnos qué es exactamente lo que no funciona? ¿Recibe una excepción o se envía la solicitud sin la cookie? ¿Puedes proporcionar un volcado de protocolo de red? – ordnungswidrig
Pruebe Fiddler http://www.fiddler2.com/fiddler2/ para ver exactamente qué sucede. –
¡Muchas gracias! Logré que mi servidor reconociera la cookie a través de: httppost.setHeader ("Cookie", "JSESSIONID =" + getSessionId()); – Zennichimaro