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

Web Perl Discussion :

Valider un formulaire via LWP et HTML::Form


Sujet :

Web Perl

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 54
    Points
    54
    Par défaut Valider un formulaire via LWP et HTML::Form
    Bonjour,

    voici mon objectif:

    Je veux récupérer ( et sauvegarder) les données de mon ami "exbury", contenues dans ce formulaire:

    http://geny.com/ChallengeListePronos

    avec mon code ci dessous, j'arrive avec le getstore à ne sauvegarder que les données de la page n°1. hors exbury est en page n°4

    Je pense que je déclare mal les autres champs inputs du formulaire " form1" .Voici son code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="form1" action="ChallengeListePronos" method=POST>
    Rechercher un joueur :<br>
    <span class="forumLien"><input name="joueur" type="text" size="25"><a href="javascript:Search();">Rechercher</a></span>
     
    <input type="hidden" name="datecourse" value="19/04/2007">
    <input type="hidden" name="sens" value="">
    <input type="hidden" name="page" value="">
    </form>
    et voici mon code actuel:
    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
     
    #!/usr/bin/perl -w
    use strict;
    use LWP::UserAgent;
    use LWP::Simple;
    use HTML::Form;
     
    # definition des variables
    my $joueur="exbury";
    my $url = 'http://www.geny.com/ChallengeListePronos';
     
    # initialisation de l'agent
    my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0' );
     
    # création de la requête
    my $req = HTTP::Request->new( GET => $url );
     
    # exécute la requête et reçoit la réponse
    my $res = $ua->request($req);
     
    # le formulaire
    my $form = ( HTML::Form->parse( $res->content, $url ) )[1];
     
    # remplir le champ joueur
    $form->find_input('joueur')->value($joueur);
     
    my $validate = $ua->request( $form->click );
     
    if ($validate->is_success) {
     
    getstore($url, 'archive.txt');
     
    }
    Merci pour votre aide.

    Altecad

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par altecad
    avec mon code ci dessous, j'arrive avec le getstore à ne sauvegarder que les données de la page n°1. hors exbury est en page n°4

    Je pense que je déclare mal les autres champs inputs du formulaire " form1" .
    Non, ton problème n'est pas là.

    Citation Envoyé par altecad
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $validate = $ua->request( $form->click );
     
    if ($validate->is_success) {
      getstore($url, 'archive.txt');
    }
    Ce getstore() envoie simplement une requête GET sans paramètre à l'URL initiale, donc tu obtiens simplement ce que cette URL renvoie par défaut, c'est à dire la première page...
    Ce que tu veux faire, c'est récupérer le contenu renvoyé par ta requête obtenue par l'intermédiaire de HTML::Form, et qui devrait marcher parfaitement, il te suffit d'utiliser la méthode content() de $validate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    my $validate = $ua->request( $form->click );
     
    if ($validate->is_success) {
      open my($store), '>', 'archive.txt'
        or die "Can't open archive.txt : $!\n";
      print $store $validate->content;
      close $store;
    }
    Et tu n'as pas besoin de LWP::Simple.


    --
    Jedaï

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 54
    Points
    54
    Par défaut
    Cela fonctionne . merci beaucoup Jedai pour ta disponibilité et ton savoir.

    Altecad.

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

Discussions similaires

  1. [TMT Validator]validation de formulaire via un lien
    Par jesus144 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/07/2009, 15h26
  2. Réponses: 7
    Dernier message: 07/06/2007, 10h22
  3. Réponses: 2
    Dernier message: 22/03/2007, 22h55
  4. Réponses: 2
    Dernier message: 09/11/2006, 22h42
  5. Réponses: 2
    Dernier message: 23/11/2005, 14h11

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