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

avec Java Discussion :

Validation automatique de formulaire


Sujet :

avec Java

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut Validation automatique de formulaire
    Bonjour, je précise tout d'abord que mes connaissances sont limitées en réseau, donc désolé si mes questions peuvent paraitre simplistes!

    je veux créer un programme qui accèderait automatiquement à une page web contenant un formulaire, remplir ce formulaire et le valider (lancer la requête); et ceci en boucle à intervalle de temps fixé.

    Plusieurs problèmes :
    - la page web (du type http:\\xx.xx.xx.xx) en question est protégée par login/password, est-il possible d'y accéder en automatique en JAVA? donc de spécifier le login et mot de passe lors de l'accès à la page.

    - le formulaire est tout simple du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <FORM action="formtotalit" method="POST">
    <input type="text"> <input type="SUBMIT" value="ok">
    </FORM>
    il s'agit donc d'un champ texte et d'un bouton de validation, la requête est alors envoyée en utilisant la méthode POST. Est-il possible de donner une valeur au champs et de valider le formulaire/lancer la requete en JAVA ?
    sous quelle forme se présente la requête? sachant que l'info se trouve dans le corps pour la méthode POST.

    j'ai vu que la commande HttpURLConnection permettait la communication avec un serveur, mais j'aimerais savoir si je peux l'utiliser dans mon cas précis.

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,
    Je ne sais pas exactement ce aue tu veux faire avec ce logiciel et si tu dois absolument le faire toi même, mais tu pourrais regarder JMeter qui fait ça très bien (et même beaucoup plus).
    Sinon ton programme java n'accède pas au formulaire sur la page, il se contente d'envoyer une requête via la méthode POST avec des paramètres, à sa voir un couple clef/valeur... La clef étant le champ name de ton input dans ton formulaire...
    En espèrant t'avoir aidé...
    Tschau

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    bonjour,
    je préfèrerai en effet pouvoir coder l'application moi même car cette partie "réseau" n'est qu'une fraction du programme qui fera ensuite du traitement sur les fichiers récupérés.

    Je pense donc partir sur un programme en JAVA.
    En aillant chercher un peu partout sur le web j'ai pu trouver quelques infos :
    est-ce que le code suivant pourrait permettre d'effectuer la requête ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    URL url = new URL("lAdresseDeMonSite" );
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    connection.setRequestMethod("POST" );
    connection.setRequestProperty("nomDuChamp", "valeurDuChamp" );
    je trouve bizarre qu'il faille régler les paramètres de la connection après avoir fait un openConnection(), est-ce que la requête va bien être lancée après le setRequestProperty ? cela aura t-il bien le même effet qu'un remplissage/validation manuelle du formulaire ?

    je voudrais votre avis sur la faisabilité du truc avant de me lancer dans un codage en JAVA.

    merci!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,
    J'ai déjà bossé exactement comme ca et ca marche. Un conseil cependant si tu veux te simplifier la vie, utilise la bibliothèque Commons HttpClient, et tu pourras faire tout plus facilement.
    Tschau

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    Salut, je rencontre un problème avant même de pouvoir envoyer ma requête. En fait la page à laquelle je tente d'accéder requiert une identification, quand j'y accède avec IE j'ai la petite fenêtre d'identification windows qui s'ouvre :


    savez-vous comment se fournir le login et le mot de passe lors de la connexion? je ne sais pas du tout sous quelle forme il est passé. j'ai bien trouvé cette page qui aurait du pallier à mon problème mais ça ne change rien, j'ai toujours l'erreur suivante :
    401: Unauthorized.

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    Bonjour, après avoir cherché comme un dingue sur le net je me suis aperçu que beaucoup on eu ce problème de popup d'authentification Windows mais que personne n'est arrivé à le résoudre de manière automatique, des dizaines de sujets créés sur diverses forums et restés sans solutions ...
    j'ai aussi beaucoup cherché en JAVA, essayé d'envoyer des requêtes de type HEAD avec le loginn et mdp codés en base 64 (basic authentication) et tout cela en vain.

    Finalement j'ai trouvé une solution assez remarquable au fin fond d'un petit forum, j'ai utilisé AJAX pour arriver à mes fins, ne me demandez pas pourquoi mais il passe outre l'authentification windows, voici le code pour accéder à une page demandant une authentification et pour valider automatiquement un 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
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <html>
    <head>
    <script type="text/javascript">
    var xmlhttp;
    function loadXMLDocGet(url)
    {
    xmlhttp=null;
    if (window.XMLHttpRequest)
      {// code for Firefox, Mozilla, IE7, etc.
      xmlhttp=new XMLHttpRequest();
      }
    else if (window.ActiveXObject)
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    if (xmlhttp!=null)
      {
      xmlhttp.onreadystatechange=state_Change;
      xmlhttp.open("GET",url,true);
      xmlhttp.send(null);
      }
    else
      {
      alert("Your browser does not support XMLHTTP.");
      }
    }
     
     
    function loadXMLDocPost(url)
    {
    xmlhttp=null;
    if (window.XMLHttpRequest)
      {// code for Firefox, Mozilla, IE7, etc.
      xmlhttp=new XMLHttpRequest();
      }
    else if (window.ActiveXObject)
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    if (xmlhttp!=null)
      {
      xmlhttp.onreadystatechange=state_Change;
      xmlhttp.open("POST",url,true);
      xmlhttp.send("clef=valeur");
      }
    else
      {
      alert("Your browser does not support XMLHTTP.");
      }
    }
     
    function state_Change()
    {
    if (xmlhttp.readyState==4)
      {// 4 = "loaded"
      if (xmlhttp.status==200)
        {// 200 = "OK"
          document.myform.test.value="connexion ok";
          document.myform.codereponse.value=xmlhttp.status;
          document.myform.txtreponse.value=xmlhttp.responseText;
        }
      else
        {
        alert("Problem retrieving data:" + xmlhttp.statusText);
        document.myform.test.value="connexion problem";
        document.myform.codereponse.value=xmlhttp.status;
        document.myform.txtreponse.value=xmlhttp.responseText;
        }
      }
    }
     
    </script>
    </head>
    <body>
    <input type="button" value="fermer" onClick="fermer()"> <br>
    <form name="myform">
    <button onclick="loadXMLDocGet('http://xx.x.x.x.x/pagesecurisee.htm')">Connexion page securisee</button>
    <input type="button" value="Connexion formulaire" onclick="loadXMLDocPost('adresse_a_laquelle_envoi_le_form')">
    <input type="text" name="test">
    code reponse :
    <input type="text" name="codereponse"><br>
    texte reponse :
    <TEXTAREA name="txtreponse" rows=32 cols=100></TEXTAREA>
    </form>
    </body>
    </html>
    tout ceci s'incruste dans une page html, il parait que l'on peut utiliser ajax directement sous JAVA, je ne me suis pas davantage creusé la tete j'ai simplement executé cette page depuis mon appli Java.
    Voila j'espere que ça évitera la galère aux futures personnes qui rencontreront ce problème!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Hmmm, dans un premier temps je dirais : Oh la belle faille de sécurité qu voilà...
    Mias ca m'intéresse : tu recois exactement le contenu que tu as en t'identifiant ?

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 161
    Points
    161
    Par défaut
    oui tout à fait c'est très étonnant !

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

Discussions similaires

  1. validation automatique de formulaire
    Par zugolin dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2007, 11h11
  2. Valider automatiquement un formulaire.
    Par Temp71 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/06/2007, 14h13
  3. Réponses: 3
    Dernier message: 01/03/2007, 09h08
  4. valider automatiquement le formulaire
    Par Mike35 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/09/2006, 11h18
  5. Validation automatique de formulaire (sans clic)
    Par budiste dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2006, 16h31

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