IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

[HTTP] Rester dans la même session après envoi du login


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut [HTTP] Rester dans la même session après envoi du login
    Bonjour,

    Pour avoir accès à un site que je nommerai www.hostname.com, il faut le nom d'utilisateur (mylogin) et le mot de passe (mypassword). Le programme ci-dessous marche à merveille pour envoyer ces paramètres. Le site en question me renvoie par la suite une page de bienvenue (html) en guise d'autorisation d'accès.

    Mon problème, c'est que je ne sais plus comment faire pour charger un nouvel URL dans la même session (dans le même programme bien évidemment) car le site me redemande à nouveau le nom d'utilisateur et le mot de passe dès que je lui soumets un URL dans domaine protégé en question etc.

    J'ai essayé de trouver la solution en me servant d'un socket mais le problème revient strictement au même: accès autorisé, puis on me redemande les paramètres de connexion ...

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    try 
    { 
    // Construct data 
    String data = URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("mylogin", "UTF-8"); 
    data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode("mypassword", "UTF-8"); 
     
    // Send data 
    String server = "http://www.hostname.com/tech/fr/validatelogon.asp"; 
    HttpURLConnection conn =(HttpURLConnection) new URL(server).openConnection(); 
    conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 
     
    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; 
    while ((line = rd.readLine()) != null) 
    { 
    System.out.println(line); 
    } 
    wr.close(); 
    rd.close(); 
    } 
    catch (Exception e) {}
    Message édité par Miss Gaelle : Balises code ajoutées, ajout de tag dans le titre.

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Le protocole HTTP est "stateless". Donc il ne supporte pas les sessions, pour contourner ce problème, on utilise principalement les cookies.

    Quand tu récupères la réponse, ton programme doit sauvegarderles cookies et les retransmettres avec la prochaine requête.

    Les cookies sont transmis dans le header.

    Tu peux utiliser la classe HTTPClient du projet Jakarta. Elle offre des facilités pour la gestion des cookies.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut Merci mille fois

    Je te remercie infiniment jowo.

    Grâce à toi, j'ai trouvé en quelques heures une solution à ce problème qui m'a tenu tête depuis des semaines voire des mois.

    En fait, je n'ai pas utilisé le HTTPClient du projet Jakarta - ça m'a paru un peu rébarbatif - mais j'ai puisé mon inspiration dans l'excellent site: http://javaalmanac.com/.

    Encore merci.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 304
    Points : 348
    Points
    348
    Par défaut
    Si ton souci est réglé, n'oublie pas de cliquer sur le bouton

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Depuis que le site auquel je me connecte a été "re-looké", je me retrouve avec le même problème qu'au départ: obligation de se loguer à chaque changement de page.

    Apparemment, Il y a juste eu deux changements: le remplacement du login par une adresse e-mail et l'adresse du serveur comme dans la portion de code ci-dessous. Le reste du code (qui marchait à merveille avant) reste strictement le même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Construct data 
    String data = URLEncoder.encode("login", charset) + "=" + URLEncoder.encode("myadressemail",charset) +"@"+ URLEncoder.encode("laposte.net", charset);
    data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode("mypassword", "UTF-8"); 
     
    // Send data 
    String server = "http://www.hostname.com/fr/user";
    Je ne sais pas si c'est à cause de l'encodage du login ou d'autres choses. J'ai essayé un encodage dans tous les sens mais rien n'y fait...

    exemple: (tout en essayant à chaque fois "email" et "login")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String data = URLEncoder.encode("login", charset) + "=" + URLEncoder.encode("myadressemail@laposte.net",charset).replace("%40","@");
    Le serveur me renvoie bien, comme avant, un cookie pour la session mais après, le cookie ne permet pas de rester dans la même session après un changement de page.

    Est-ce que quelqu'un peut m'éclairer car je suis complètement perdu.

    Merci d'avance pour vos suggestions.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 49
    Points : 39
    Points
    39
    Par défaut
    J'ai posé ce même problème dans un autre forum.
    On a trouvé la solution, donc je la mets toujours ici au cas où quelqu'un d'autre en aurait besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import org.apache.commons.httpclient.*;
    import org.apache.commons.httpclient.methods.*;
     
    public class Connection
    {
        public static String setConnection()
        {
    	HttpClient client = new HttpClient();
     
    	PostMethod authpost = new PostMethod("http://www.hostname.com/fr/user/login");
    	NameValuePair login = new NameValuePair("Login","myadressemail@laposte.net");
    	NameValuePair password = new NameValuePair("Password", "mypassword");
     
    	authpost.setRequestBody(new NameValuePair[]{ login, password });
     
    	try
    	{
    	    client.executeMethod(authpost);
    	} catch (java.io.IOException e){}
     
    	return(authpost.getResponseHeader("Set-Cookie").getValue());
        }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rester sur la même JSP après l'exécution de l'action
    Par daydream123 dans le forum Struts 2
    Réponses: 5
    Dernier message: 21/05/2014, 14h03
  2. rester dans la même ligne après le rechargement du datagrid
    Par zoro007 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 14/03/2014, 11h24
  3. Réponses: 2
    Dernier message: 17/03/2011, 14h25
  4. Rester dans le même MDI de l'application
    Par tunis71187 dans le forum Forms
    Réponses: 8
    Dernier message: 09/12/2010, 11h57
  5. L'include doit rester dans le même cadre
    Par koskoz dans le forum Langage
    Réponses: 8
    Dernier message: 03/12/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo