Pouvez-vous me dire comment stocker le jsessionid dans le cookie, afin qu'il puisse être transmis à la servlet avec la requête post ? J'utilise Apache HttpClient version 4.0.3. Toutes les solutions que j'ai trouvées expliquent comment faire cela avec HttpClient 3.1. J'ai lu le tutoriel et essayé, mais cela ne fonctionne pas.
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);
Editer - explications supplémentaires
Je me connecte à des servlets écrits par un ami. Je me suis connecté et j'ai obtenu jsessionid
. Maintenant, je veux envoyer une autre requête et je dois passer le jsessionid à des fins d'autorisation. Le servlet fonctionne bien car j'ai utilisé java HttpURLConnection, défini le cookie, l'ai passé et cela a fonctionné. Maintenant, avec HttpClient, je n'obtiens aucune exception mais le code de retour de la servlet d'un ami indique qu'il n'y avait pas de sessionid dans la requête.
Une autre édition - J'ai une solution J'ai défini le paramètre de l'en-tête de la demande et cela a fonctionné. Le servlet a reconnu le sessionid.httppost.setHeader("Cookie", "JSESSIONID="+ getSessionId());
Ma question est la suivante : cette méthode est-elle correcte ?
0 votes
Pourriez-vous nous dire ce qui ne fonctionne pas exactement ? Obtenez-vous une exception ou la demande est-elle envoyée sans le cookie ? Pouvez-vous fournir un dump du protocole réseau ?
0 votes
Essayez Fiddler fiddler2.com/fiddler2 pour voir ce qui se passe exactement.
1 votes
Merci beaucoup ! J'ai réussi à faire reconnaître le cookie par mon serveur via : httppost.setHeader("Cookie", "JSESSIONID="+ getSessionId()) ;
0 votes
Tout simplement génial !! vous me sauvez