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

Services Web Java Discussion :

HttpClient, dévérouiller une page web avec la méthode POST


Sujet :

Services Web Java

  1. #21
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il faut que tu fasses une redirection oui. Une redirection ce n'est pa compliquée, c'est un get sur une URL, cette URL étant dans le header Location. Si tu utilises la même instance de client (CloseableHttpClient) et de context (HttpClientContext ), les cookies de session devraient normalement être bien conservés (je dis ça au conditionnel parce que ça fait un bail que je n'ai pas manipuler ce genre de truc et je me base sur ma mémoire) et donc tu seras bien en session.

    Tu sembles être en session oui, mais c'est quand même étrange. Le paramètre login_type devrait contenir la valeur en dur "password_only". Et le paramètre password ton mot de passe. Je pense que la servlet utilise plusieurs types d'authentification, qu'on choisit avec login_type.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  2. #22
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Je penses que je vais avoir a peu près la même démarche à faire, puisque en faites ce lien la, me donne une page vierge avec "Connexion réussie" et ensuite elle se refresh pour afficher le menu.

    Et comme tu m'as déjà parlé de refresh tout à l'heure. Je vais devoir retomber dessus.
    Ou alors j'ai vu comment fonctionnait l'url avec les cookies de session donc je peux peut être la reconstituer à partir de ces derniers.

  3. #23
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Il faut que tu fasses une redirection oui. Une redirection ce n'est pa compliquée, c'est un get sur une URL, cette URL étant dans le header Location. Si tu utilises la même instance de client (CloseableHttpClient) et de context (HttpClientContext ), les cookies de session devraient normalement être bien conservés (je dis ça au conditionnel parce que ça fait un bail que je n'ai pas manipuler ce genre de truc et je me base sur ma mémoire) et donc tu seras bien en session.
    Je me suis donc occupé de la redirection, qui permet de valider la connexion, maintenant je dois m'occuper du refresh: (avec cette ligne là probablement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <META HTTP-EQUIV="refresh" CONTENT="2; url=/cgi-bin/dynamic/reports_and_information.html?sessionid=7o2LSc7UK0hoBzPS&amp;sessionkey=LRpGYA2Q5olfo9ij"; charset=UTF-8>
    Comment je peux traiter cela ??

    la page:
    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
     
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="refresh" CONTENT="2; url=/cgi-bin/dynamic/reports_and_information.html?sessionid=7o2LSc7UK0hoBzPS&amp;sessionkey=LRpGYA2Q5olfo9ij"; charset=UTF-8>
    <script language="javascript">
    function reload_left()
    {
        // set session cookies cookie
        document.cookie='session_id=7o2LSc7UK0hoBzPS; expires=Wednesday, 23-Jan-2030 00:00:01 GMT; path=/';
        document.cookie='session_key=LRpGYA2Q5olfo9ij; expires=Wednesday, 23-Jan-2030 00:00:01 GMT; path=/';
     
        // retrieve left frame using new frame name 'Directory'
        frame = top.Directory;
        // if the left frame is still using the old name, 'frame' will be null.
        if (frame == null)
        {
            // use old frame name 'left' instead.
            frame = top.left;
        }
        i = frame.document.getElementById('logout_div');
        i.className = 'visible';
    }
    </script>
    <LINK REL="stylesheet" HREF="/configStyle.css" TYPE="text/css">
    <TITLE>Connexion réussie</TITLE>
    </HEAD>
    <BODY onload="reload_left();">
    <H1>Connexion réussie</H1>
    </BODY>
    </HTML>

  4. #24
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par TheLLspectre Voir le message
    Comment je peux traiter cela ??
    Parsing HTML (par exemple avec JSoup), pour récupération de l'url.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #25
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Parsing HTML (par exemple avec JSoup), pour récupération de l'url.
    D'accord tout simplement je pensais qu'il y avait une spécificité avec le refresh.

    Je me retrouve encore coincé .....

    Donc je fais la redirection vers la validation de la connexion, ensuite cette page la je prends le lien du refresh qui amène donc sur le menu.
    Et je penses que je me perds un peu en allant...
    Et donc la ce que je veux c'est aller dans le menu, du coup je refais un httpGet dans l'actuel, mais sur l'adresse du menu avec la session actuel.
    Mais avec ce deuxieme httpGet je test le instream avec un bufferedReader, et en gros il me redonne la page de connexion.
    Mais si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = Jsoup.connect(redirection).get();
    il me donne bien le menu, avec la session.

    Subtilité le menu est form POST:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     <form ACTION="/cgi-bin/postpf/cgi-bin/dynamic/reports_and_information.html?sessionid=DbNTGbwXzQ_TFMBs&amp;sessionkey=i1HcogZ4cdjTx3M1" METHOD="post"> 
       <table border="0"> 
        <tbody>
         <tr>
          <td><a href="/cgi-bin/dynamic/printer/config/reports/devicestatistics.html">Stat. périphérique</a></td>
         </tr> 
    ....
    et si je me redirige sur le premier lien (c'est celui dont j'ai besoin), avec la meme façon le Jsoup.connect, là il ne reconnaît plus la session.

    Je dois avoir quelque chose à faire avec le form post, pour pouvoir conserver la session sur les liens qu'il contient ?

    EDIT:

    J'ai trouvé un truc intéressant en faisant un .post() de Jsoup.connect(), sur le lien ACTION du form, ça me retourne:

    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
     
    <html>
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
      <script language="JavaScript">
    var count=1
    var count2=1
    bname=navigator.appName
    function checkIfFound()
    {
    	count = count + 1
    	count2 = count2 + 1
    	if(count >= 3)
    	{
    		count = 1
    		if(count2 <=24 )
    		setTimeout('checkIfFound()',1000);
    	window.location.href = "/cgi-bin/dynamic/config/config.html?port=1"
    }
    else if (count == count)
    {
    	setTimeout('checkIfFound()',10000);
    	}
    }</script> 
      <title>Sélection en cours</title> 
      <noscript>
       <meta HTTP-EQUIV="refresh" CONTENT="40; url=/cgi-bin/dynamic/config/config.html?port=1">
      </noscript> 
      <link REL="stylesheet" HREF="/configStyle.css" TYPE="text/css">
     </head> 
     <body onload="checkIfFound()">
      <h1>Sélection en cours</h1> 
     </body>
    </html>

  6. #26
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Il ne faut pas utiliser les méthodes de requête de JSoup (tu utilises HttpClient, ou HtmlUnit, c'est tout, sinon il faut refaire toute la gestion de la persistence de la session) : je te parlais de jsoup seulement pour PARSER le html ( Jsoup.parse(String html) avec html une chaîne produite en lisant le stream de l'entity de la réponse en HttpClient par exemple, ou Jsoup.parse(inputStream) directement sur HttpEntity.getContent()).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #27
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    En faite je suis passé par tout cela parce que le premier httpGet que je fais après le httpPost me retourne rien de bien en faite il me retourne comme si il n'avait pas de session, alors que le Jsoup me donnait bien les résultats, l'affichage de page était correcte et je pouvait avancer.
    La du coup, j'ai fait du nettoyage dans mon code, parce que ça devenait trop important avec tout ce que je j'avais rajouté, et je reprends après le httpPost, mais j'ai pas de résultat positif comme ça. Donc y a un truc qui ne va pas !

  8. #28
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Utilise JSoup alors, quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Connection.Response responseLogin = Jsoup.connect( urllogin )
                .data("login_type","password_only", "goto", "/cgi-bin/dynamic/reports_and_information.html", "accid", "13", "password", password)
                .method(Method.POST)
                .timeout(10000)
                .execute();
     
     
    Connection.Response response = Jsoup.connect( urlpage ) 
                .cookies(responseLogin.cookies()) 
                .timeout(10000)
                .execute();
     
    System.out.println(response.body());
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #29
    Membre à l'essai Avatar de TheLLspectre
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2014
    Messages : 43
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Utilise JSoup alors, quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Connection.Response responseLogin = Jsoup.connect( urllogin )
                .data("login_type","password_only", "goto", "/cgi-bin/dynamic/reports_and_information.html", "accid", "13", "password", password)
                .method(Method.POST)
                .timeout(10000)
                .execute();
     
     
    Connection.Response response = Jsoup.connect( urlpage ) 
                .cookies(responseLogin.cookies()) 
                .timeout(10000)
                .execute();
     
    System.out.println(response.body());
    Magnifique !!!!

    Cette façon de faire me convient beaucoup plus, et beaucoup plus lisible, très facile et rapide !

    Et là on est sur de conserver la session ouverte !

    On va pouvoir cloturer ce topic je penses ! Merci Beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. recupérer le code source d'une page web avec httpclient
    Par fraisa1985 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 01/07/2008, 10h40
  2. Lancement d'une page web avec un bouton
    Par Elandril dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 14/03/2006, 21h08
  3. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  4. Ouvrir une page Web avec le navigateur
    Par BB85_TIGRIS dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 17/12/2005, 09h45
  5. Son dans une page Web avec Firefox
    Par diod dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 02/12/2005, 17h49

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