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 :

Aide pour HttpClient


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut Aide pour HttpClient
    Bonjour, je dois envoyer des requêtes HTPP à une page PHP, je me suis donc orienté vers HTTPClient, seulement je n'arrive pas à "envoyer" mes paramètres... Il ne m'affiche que le code source de la page.

    //Création d'une instance de HttpClient
    HttpClient client = new HttpClient();

    //Création d'une méthode POST
    PostMethod method = new PostMethod("http://localhost/monAppli/login_page.php");

    //On défini les variables
    try {
    NameValuePair[] data = {
    new NameValuePair("user", "administrator"),
    new NameValuePair("pwd", "")
    };
    method.setRequestBody(data);

    client.executeMethod(method);
    String response = new String(method.getResponseBodyAsString().getBytes("8859_1"));
    System.out.println("Affichage de la réponse");
    System.out.println(response);
    method.releaseConnection();
    } catch (HttpException e) {
    System.err.println("Fatal protocol violation: " + e.getMessage());
    e.printStackTrace();
    } catch (IOException e) {
    System.err.println("Fatal transport error: " + e.getMessage());
    e.printStackTrace();
    } finally {
    System.out.println("Fermeture de la connection");
    // La connection est lâché.
    method.releaseConnection();
    }
    Après le "Affichage de la réponse", j'ai du code HTML, mais à l'intérieur les <input value...> ne sont pas renseignées. De plus le formulaire a pour "monForm". Je suis un peu perdu je vous l'avoue.

    Merci de votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    Bonjour,

    plusieurs choses:
    - Mets ton code entre balises code plutot que citation, pour la lisibilité
    - A priori tu envoies tes paramètres correctement
    - Ta dernière phrase me fait penser que tu n'envoie peut etre pas tes paramètres à la bonne page php. Peux tu mettre le code php de ta page: http://localhost/monAppli/login_page.php ?

    En fait je crois comprendre que cette page php est celle qui affiche les cases login et mot de passe quand tu utilises un navigateur. Mais la page à laquelle il faut envoyer tes login et mot de passe en est peut etre une autre...

    Bref si tu mets le code de http://localhost/monAppli/login_page.php, on pourra certainement mieux t'aider!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Déjà merci pour ton aide.
    Donc en effet, dans la balide form, l'attribut action pointe sur autre chose. Je mets quand même le code de la page login_page.php :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    <br />
    <div align="center">
    <form name="login_form" method="post" action="login.php">
    <table class="width50" cellspacing="1">
    <tr>
    	<td class="form-title">
    		<?php
    			if ( !is_blank( $f_return ) ) {
    			?>
    				<input type="hidden" name="return" value="<?php echo string_html_specialchars( $f_return ) ?>" />
    				<?php
    			}
    			echo lang_get( 'login_title' ) ?>
    	</td>
    	<td class="right">
    	<?php
    		if ( ON == config_get( 'allow_anonymous_login' ) ) {
    			print_bracket_link( 'login_anon.php', lang_get( 'login_anonymously' ) );
    		}
    	?>
    	</td>
    </tr>
    <tr class="row-1">
    	<td class="category" width="25%">
    		<?php echo lang_get( 'username' ) ?>
    	</td>
    	<td width="75%">
    		<input type="text" name="username" size="32" maxlength="32" />
    	</td>
    </tr>
    <tr class="row-2">
    	<td class="category">
    		<?php echo lang_get( 'password' ) ?>
    	</td>
    	<td>
    		<input type="password" name="password" size="16" maxlength="32" />
    	</td>
    </tr>
    <tr class="row-1">
    	<td class="category">
    		<?php echo lang_get( 'save_login' ) ?>
    	</td>
    	<td>
    		<input type="checkbox" name="perm_login" />
    	</td>
    </tr>
    <tr>
    	<td class="center" colspan="2">
    		<input type="submit" class="button" value="<?php echo lang_get( 'login_button' ) ?>" />
    	</td>
    </tr>
    </table>
    </form>
    </div>
    Voilà, j'ai essayé en indiquant dans l'url login.php au lieu de login_page.php, il ne m'afiche aucune réponse après mon System.out.println("Affichage de la réponse");". Et dans ce cas là, comment savoir si tout se passe bien?

  4. #4
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    A priori, si rien ne s'affiche, tout ne s'est pas si bien passé que ca!! Je suppose que quand tu utilises tes pages php via un navigateur, une fois loggé, tu vois quelquechose s'afficher, donc on devrait aussi avoir une réponse.

    Par contre tu fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NameValuePair[] data = {
    new NameValuePair("user", "administrator"),
    new NameValuePair("pwd", "")
    Et dans ton HTML, on trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type="text" name="username" size="32" maxlength="32" />
    ...
    <input type="password" name="password" size="16" maxlength="32" />
    Donc, tu devrais normalement envoyer via ton programme java:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NameValuePair[] data = {
    new NameValuePair("username", "administrator"),
    new NameValuePair("password", "")
    Vu que ce sont les noms spécifiés pour ces champs dans le HTML. En suite la balise form spécifie:
    action="login.php" par conséquent toutes ces données doivent etre envoyées à login.php et pas login_page.php comme tu le faisais au début.

    Pour finir, ton formulaire contient un champ hidden, qui n'apparait pas à l'affichage, mais dont la valeur est également envoyée (comme pour username et password). Il est possible que tu doives aussi le renseigner (pas certain mais possible).

    Pour finir, je te conseille d'utiliser l'extension TamperData de Firefox, elle enregistre et te permet de visualiser toutes les requetes HTTP générées par Firefox. Donc tu utilises Firefox pour aller sur login_page.php, tu actives l'extension, tu te connectes et une fois connecté, tu retournes voir quelle requete Firefox a envoyée pour obtenir ce résultat. Libre à toi de t'en inspirer.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Je te remercie.
    J'ai bien remis tout, je vais essayer avec les champs hidden pour voir. Et je vais utiliser le tamperData, je vous redis ça.

    Mais encore merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Après test, j'ai rajouté les champs "hidden" et utilisé TamperData pour visualiser les requêtes. Elles ston bien evnoyées au bon fichier.

    Mais je n'affiche toujours rien dans ma fenêtre java...

  7. #7
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    As-tu visualisé le contenu de la requete envoyée par TamperData? Peux-tu le copier ici s'il te plait.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Bien sûr :
    Host=localhost
    User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) Gecko/20061010 Firefox/2.0
    Accept=text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Language=fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding=gzip,deflate
    Accept-Charset=ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive=300
    Connection=keep-alive
    Referer=http://localhost/mantis/login_page.php
    Content-Type=application/x-www-form-urlencoded
    Content-Length=32
    POSTDATA=username=administrator&password=


    Voilà pour la requête...

  9. #9
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    Bon. Donc il n'est pas nécessaire de transmettre le champ caché à priori, dans POSTDATA, on a uniquement username et password. Par contre maintenant je ne vois pas d'où peut venir ton problème...
    Que fait la page login? Est-ce qu'elle vérifie puis affiche du contenu, ou bien vérifie puis redirige vers une autre page?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Et bien la page login.php vérifie si le couple Login et Mot De Passe existe dans la base et redirige vers la page login_cookie_test.php.

    Maintenant j'essaie d'utiliser ce Java sur un autre fichier.php qui gère l'ajout d'élément dans une base mysql à l'aide d'un formulaire PHP, quand je rajoute les variables dans mon code, je n'ai aucun ajout dans cette base.

    N'y a t il pas un moyen d'avoir un affichage de quelque chose? Même une erreur...

    Mais encore merci de prendre le temps.

  11. #11
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    La redirection doit être configurée dans HttpClient pour l'accepter ou non. Vérifie que c'est bien paramétré dans ton cas. Sinon, je vais probablement être à court d'idées.

    Tu pourrais éventuellement créer une page php très simple, avec juste l'affichage des variables passées par POST, tu saurais déjà un peu mieux d'où vient ton problème.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Ok, ben je vais faire cela.
    Je mettrai le résultat, je croise les doigts !

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Bon, et bien voilà, pour commencer je n'ai pas trouvé le petit paramètre pour la redirection... Mais bon je me suis pas arrêté à ça, et j'ai quand même essayé avec un petit formulaire tout bête dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form>
     
    Nom : <input type="text" name="username">
    Pass: <input type="password" name="password">
    </form>
    Rien de plus simple, en lançant mon code j'obtiens à l'affichage dans ma console :
    Création d'une instance HTTPRequest
    Affichage de la réponse
    <form >

    Nom : <input type="text" name="username">
    Pass: <input type="password" name="password">
    </form>
    Fin d'affichage de la réponse
    Fermeture de la connection
    Puis j'ai rajouté un attribut : action="login.php" dans ma balise form, voici ce que j'obtiens :

    Création d'une instance HTTPRequest
    Affichage de la réponse
    <form action="login.php">

    Nom : <input type="text" name="username">
    Pass: <input type="password" name="password">
    </form>
    Fin d'affichage de la réponse
    Fermeture de la connection
    Donc il semble qu'il y ait un soucis avec le formulaire php que je veux utiliser... Mais je ne comprends pas pourquoi. Sachant qu'il y a plusieurs formulaires sur la même page, peut être est ce à cause de cela?

  14. #14
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    Tu fais plusieurs confusions. La page que tu appelles par POST et à laquelle tu fournis tes arguments ne doit pas être celle qui contient le formulaire mais celle qui est appelée par le formulaire (le fameux action="page.php").

    Essaye donc ceci:
    Fais une page PHP appelée maPageBidon.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $user = $_POST['username'];
    $pwd = $_POST['password'];
     
    echo "Utilisateur: $user <br />\n";
    echo "Mot de Passe: $pwd";
    ?>
    (Je ne suis pas très sur du code php, pas touché à ca depuis un bail)

    Ensuite tu reprends ton code java avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PostMethod method = new PostMethod("http://localhost/monAppli/maPageBidon.php");
    et:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NameValuePair[] data = {
    new NameValuePair("username", "administrator"),
    new NameValuePair("password", "unMotDePasse")
    Si tout se passe bien, tu dois voir s'afficher en retour:
    Utilisateur: Administrator <br />
    Mot de Passe: UnMotDePasse
    Si déjà ceci marche ca fixera un peu les idées.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Et bien ça marche comme tu l'as écris. Désolé pour les confusions !

    De plus sachant que les pages php que j'appelle ne sont pas de moi, et que je ne peux pas les modifier, y a t il unproblème de cookie?

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 208
    Par défaut
    Et bien, j'ai réussi !
    En fait le problème venait d'une autre page PHP. Je précise que ce n'est pas mon application PHP !
    En tout cas, merci de ton aide Babaôrom !

  17. #17
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 93
    Par défaut
    Content d'avoir pu aider.

    Si maintenant ca marche, marque ce post comme résolu en cliquant sur le bouton résolu (en bas, a coté de ajouter une réponse).

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

Discussions similaires

  1. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 20h01
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 11h48
  3. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 18h05
  4. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 22h45

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