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

Java Discussion :

Se logger sur un site via la méthode post


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut Se logger sur un site via la méthode post
    Bonjour.

    Je souhaite me logger sur un site via la méthode post.
    Voilà le code du formulaire :
    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
     
    <form id="login" method="post" action="login.php?action=in" onsubmit="return process_form(this)">
    	<div class="inform">
    		<fieldset>
    			<legend>Saisissez ci-dessous votre nom d'utilisateur et votre mot de passe</legend>
    			<div class="infldset">
    				<input name="form_sent" value="1" type="hidden">
    				<input name="redirect_url" value="index.php" type="hidden">
    				<label class="conl"><strong>Nom d'utilisateur</strong><br><input name="req_username" size="25" maxlength="25" tabindex="1" type="text"><br></label>
    				<label class="conl"><strong>Mot de passe</strong><br><input name="req_password" size="16" maxlength="16" tabindex="2" type="password"><br></label>
    				<p><a href="register.php" tabindex="4"></a>&nbsp;&nbsp;</p>
    				<p class="clearb"><br></p>
    			</div>
    		</fieldset>
    	</div>
    	<p><input name="login" value="S'identifier" tabindex="3" type="submit"></p>
    </form>
    J'ai essayé différentes choses avec HttpClient sans succès donc j'ai tenté de simplifier au maximum mais rien n'y fait.
    Voilà où j'en suis :
    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
     
    URL url = new URL("http://lesite/login.php?action=in");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);
     
    DataOutputStream out = new DataOutputStream(conn.getOutputStream());
    out.writeBytes("req_username=" + USERNAME + "&req_password=" + PASSWORD);
    out.flush();
    out.close();
     
    BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while((line = in.readLine()) != null)
    	System.out.println(line);
    in.close();
    Peu importe ce que je tente j'ai toujours le même résultat : le code source de la page de login comme si je n'avais pas tenté de me logger, aucun message d'erreur disant que le login ou le mot de passe sont faux, donc il doit y avoir un souci dans ma manière d'envoyer les paramètres.

    Je coince depuis des heures sur ce problème tout bête. Si quelqu'un pouvait me sortir de ce pétrin je lui en serais très reconnaissant
    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Visiblement tu ne passes pas tous les paramètres du formulaires d'authentification comme redirect_url et form_sent.
    Vu que tu ne lui passes pas de redirect_url, je penses qu'une fois authentifié il te renvoie sur le formulaire de login même si l'authentification a réussi.
    Essaie avec tous les paramètres et tiens nous au courant.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Salut.

    Merci beaucoup pour ta réponse, le problème venait effectivement de là. Vu que ces paramètres avaient une valeur par défaut, je pensais qu'il n'était pas nécessaire d'y toucher. Je leur ai donc passé leur valeur par défaut et maintenant ça marche.

    Je laisse le topic ouvert au cas où j'ai un souci avec les cookies

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    Peux-tu donner le code que tu as utilisé une fois que ça marche, je suis intéressé.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Pas de souci, voilà mon code.

    Pour la connexion et l'enregistrement du cookie je fais comme ça :
    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
    URL url = new URL("http://lesite/login.php?action=in");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
     
    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
    out.write("form_sent=1&redirect_url=index.php&req_username=" + USERNAME + "&req_password=" + PASSWORD);
    out.flush();
    out.close();
     
    String headerName = null;
    for(int i=1 ; (headerName = conn.getHeaderFieldKey(i) ) != null; i++) {
    	if(headerName.equals("Set-Cookie")) {
    		String cookie = conn.getHeaderField(i);
    		if(cookie.startsWith("punbb_cookie")) {
    			PrintWriter pw = new PrintWriter(new FileOutputStream("cookie.txt"));
    			pw.write(cookie);
    			pw.close();
    		}
    	}
    }
    Ensuite lorsque je veux accéder à une page du site (ici : link) en étant loggé, je fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("cookie.txt")));
    String cookie = in.readLine();
    in.close();
     
    URL url = new URL(link);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestProperty("Cookie", cookie);
    conn.connect();

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Points : 321
    Points
    321
    Par défaut
    Merci d'avoir répondu, mais à quoi correspond ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(cookie.startsWith("punbb_cookie")) {
    			PrintWriter pw = new PrintWriter(new FileOutputStream("cookie.txt"));
    			pw.write(cookie);
    			pw.close();
    		}

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Ces lignes correspondent à l'enregistrement du cookie dans un fichier.
    Le if est là uniquement parce que le site en question m'envoie plusieurs cookies et qu'un seul est utile pour la persistance de l'authentification.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/02/2009, 13h10
  2. [web] authentification sur un site via VBA
    Par cafeine dans le forum Contribuez
    Réponses: 0
    Dernier message: 18/04/2008, 16h47
  3. Tableau via la méthode POST
    Par tiff44 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 06/11/2007, 10h44
  4. upload fichiers via la méthode POST
    Par shiin dans le forum Réseau
    Réponses: 3
    Dernier message: 20/02/2007, 10h54
  5. Réponses: 12
    Dernier message: 22/01/2006, 18h01

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