Ouvrir/conserver une session HTTP ?

Ouvrir/conserver une session HTTP ? - Java - Programmation

Marsh Posté le 12-10-2004 à 17:59:52    

J'aimerais utiliser Java pour interagir sur un forum genre HFR ... je connais rien a la maniere dont les sessions sont gerees (en general) pour ce genre de truc : imaginons que je me connecte a l'url d'identification pour envoyer mon user/password, j'imagine que le maintien de mon identite se passe soit par cookie, soit par une session cote server ? Y'a d'autres moyens ?
 
Si c'est par des cookies, j'imagine qu'il y a moyen de s'en tirer facilement. Mais si c'est par une session, comment ca se passe pour "maintenir" la session d'une requete HTTP a la suivante, en Java ? Avec un sessionId ? En creant un HttpURLConnection et en tapant uniquement dedans ?
 
PS : c'est des questions d'ordre general, pas lie a un forum en particulier mais j'imagine qu'il n'y a pas 500 manieres de faire :??:


Message édité par Gonzoide le 12-10-2004 à 18:02:29
Reply

Marsh Posté le 12-10-2004 à 17:59:52   

Reply

Marsh Posté le 12-10-2004 à 18:11:20    

autant pour moi, tu veux faire l'inverse, i.e te connecter par HTTP sur un server et ensuite maintenir ton identite ?


Message édité par julienv le 12-10-2004 à 18:12:39
Reply

Marsh Posté le 12-10-2004 à 18:27:38    

Gonzoide a écrit :

J'aimerais utiliser Java pour interagir sur un forum genre HFR ... je connais rien a la maniere dont les sessions sont gerees (en general) pour ce genre de truc : imaginons que je me connecte a l'url d'identification pour envoyer mon user/password, j'imagine que le maintien de mon identite se passe soit par cookie, soit par une session cote server ? Y'a d'autres moyens ?
 
Si c'est par des cookies, j'imagine qu'il y a moyen de s'en tirer facilement. Mais si c'est par une session, comment ca se passe pour "maintenir" la session d'une requete HTTP a la suivante, en Java ? Avec un sessionId ? En creant un HttpURLConnection et en tapant uniquement dedans ?
 
PS : c'est des questions d'ordre general, pas lie a un forum en particulier mais j'imagine qu'il n'y a pas 500 manieres de faire :??:

ce qu'on appelle "session" sur le web(et ds d'autres cas d'ailleurs) n'est en aucun cas maintenu par le client, mais par le serveur. tout ce que le client fait c'est envoyer son identifiant de session à chaque requete. le serveur fait un "mapping" entre cet id et un "objet session" dans son coin. le client passe en son id, dans le cas du web, soit par un cookie, soit par un parametre de la requete (get ou post selon les cas)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 12-10-2004 à 18:34:26    

en fait si la session est maintenue par une cookie, c est facile de propager la session car le cookie sera dans les header HTTP de la reponse.
 
dans le cas d'une session par parametre, c est plus dur, car tu dois interpreter tous les liens du document et en extirper la valeur.
 
une librairie a utiliser pour ce genre de chose est commons http client (qui vient justement de sortir en version 2.0) http://jakarta.apache.org/commons/httpclient/

Reply

Marsh Posté le 12-10-2004 à 21:56:26    

julienv a écrit :

en fait si la session est maintenue par une cookie, c est facile de propager la session car le cookie sera dans les header HTTP de la reponse.
 
dans le cas d'une session par parametre, c est plus dur, car tu dois interpreter tous les liens du document et en extirper la valeur.
 
une librairie a utiliser pour ce genre de chose est commons http client (qui vient justement de sortir en version 2.0) http://jakarta.apache.org/commons/httpclient/


:jap:, merci, je vais voir ca

Reply

Marsh Posté le 12-10-2004 à 21:58:03    

julienv a écrit :

autant pour moi, tu veux faire l'inverse, i.e te connecter par HTTP sur un server et ensuite maintenir ton identite ?


tout a fait ... je suis en train de regarder HttpURLConnection , mais je suis pas convaincu ...

Reply

Marsh Posté le 13-10-2004 à 20:58:48    

the real moins moins a écrit :

le serveur fait un "mapping" entre cet id et un "objet session" dans son coin. le client passe en son id, dans le cas du web, soit par un cookie, soit par un parametre de la requete (get ou post selon les cas)


Et une fois que le client a passé son id, le serveur cherche un objet session avec cet id, c'est bien ça ?
J'ai vu qu'avec les servlets, les sessions sont automatiquement géré par le conteneur, et on peut avoir les informations :

request.getRequestedSessionId ()

, et

request.getSession ()

, c'est ce qui correspond à l'id et l'objet session ? Dans ce cas là comment on s'est entre 2 requetes a la servlet que c'est toujours le même client puisqu'apparement à chaque requete on a toujours un id et un objet session ? Le serveur doit mémoriser les id des clients qui se sont deja identifiés et regarder a chaque requete si l'id est bien enregistré ? A moins que quand un client s'identifie, le serveur met un attribut à l'objet session pour dire qu'il est identifié ? J'ai peur de refaire des tests qui ne sont pas necessaire et j'aimerais bien comprendre...

Reply

Marsh Posté le 13-10-2004 à 21:16:46    

patachou a écrit :

Le serveur doit mémoriser les id des clients qui se sont deja identifiés et regarder a chaque requete si l'id est bien enregistré ?  

oui... c'est une bete Map<id,session>


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-10-2004 à 21:30:01    

Gonzoide a écrit :

tout a fait ... je suis en train de regarder HttpURLConnection , mais je suis pas convaincu ...

et pouquoi ?
http://opensvn.csie.org/jcoincoin/ [...] oyeur.java
 

Code :
  1. if (!message.getAnonymous())
  2.                 connection.setRequestProperty("Cookie", tribune
  3.                         .getCookieString());


 
(j'arrête pas de poster mon code ici en fait, tout le monde va bien pouvoir voir que je code comme un porc avec google)


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 13-10-2004 à 21:49:35    

the real moins moins a écrit :

oui... c'est une bete Map<id,session>


Ok merci, je voulais juste savoir pour pas refaire des trucs qui étaient déjà fait :).

Reply

Marsh Posté le 13-10-2004 à 21:49:35   

Reply

Marsh Posté le 13-10-2004 à 21:50:57    

mais tu es du coté client toi, t'as pas à "faire" quoi que ce soit si ce n'est passer ton session_id... renvoyer le cookie que le serveur t'auras envoyé quoi [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-02-2005 à 00:14:41    

J'ai une question sur l'identification sur un serveur protégé par un fichier .htaccess. J'aimerais savoir comment je pourrais m'identifier pour accèder à la page.
Normalement on peut mettre dans l'url le user et le pass comme par exemple : http://patachou:mdp@localhost/index.php
 
Malheuresement quand je passe ca comme argument à URL () j'ai une erreur 401 en reponse du serveur :

Code :
  1. java.io.IOException: Server returned HTTP response code: 401 for URL: http://patachou:mdp@localhost/index.php
  2. at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:789)
  3. at util.http.RequeteHttp.doPost(RequeteHttp.java:70)
  4. at util.http.RequeteHttp.main(RequeteHttp.java:120)

Reply

Marsh Posté le 04-02-2005 à 10:17:27    

passer le mot de passe dans l'url est une facilité gérée par le navigateur, c'est pas la façon de passer le login mot de passe.
 
Il faut que tu utilises le systeme d'autentification HTTP.
http://www.javaworld.com/javaworld [...] tip47.html
http://www.javaworld.com/javaworld [...] tip46.html
 
 
sinon, tu peux aussi utiliser des API pour faire ton client HTTP : http://jakarta.apache.org/commons/ [...] ation.html

Reply

Marsh Posté le 04-02-2005 à 19:03:43    

Merci pour tous les liens benou, ca va grandement m'avancer :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed