Bonjour,
J'ai un petit problème avec le module HTTML::Form. Je me connecte tout d'abord en http sur une adresse qui demande un login et un mot de passe. Je récupère le formulaire et le renvoie complété.
Suite à cela, le serveur me renvoie bien la page que j'ai spécifié dans l'url ($base). Mais cette page, récupérée dans la variable $res2, correspond en fait à un formulaire que j'aimerai compléter dans mon script. J'ai donc écris cette ligne : my $form2 = HTML::Form->parse( $res2->content ); mais le shell me donne l'erreur suivante : HTML::Form::parse: No $base_uri provided at scriptHttp2qua.pl line 39
Je sais bien qu'il faut normalement préciser l'url, mais c'est inutile dans ce cas et sur le site des mongueurs, ils l'écrivent aussi de cette manière : http://articles.mongueurs.net/maga [...] mag56.html (à la fin, dans gestion des formulaires complexes).
Si je précise l'url, j'ai l'erreur suivante : Can't call method "value" on an undefined value at scriptHttp2qua.pl line 40.
Est ce que quelqu'un peut m'aider à récupérer le deuxième formulaire contenu dans $res2 (qui comprend l'en-tête+formulaire) ?
De plus, le cookies ne s'efface pas à la fin de mon script. Quelqu'un sait-il pourquoi ? Faut-il fermer la connexion plus proprement ?
Voici le code afin que vous puissiez voir ce que je cherche à faire :
Code :
- #!/usr/bin/perl -w
- use strict;
- use LWP::UserAgent;
- use HTML::Form;
- use HTTP::Cookies;
- use LWP::Simple;
- # les paramètres personnels
- my ( $user, $pass ) = qw( nom mdp );
- my $base = 'http://X.X.X.X/RTIR/Create.html?Queue=Incidents';
- my $req;
- my $cookies = 'cookies.txt';
- # initialisation de l'agent
- my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.0.14)',
- cookie_jar => HTTP::Cookies->new(
- file => $cookies,
- autosave => 1,
- ignore_discard => 1 )
- );
- # création de la requête
- $req = HTTP::Request->new( GET => "$base" );
- # exécute la requête et reçoit la réponse
- my $res = $ua->request($req);
- die $res->status_line if not $res->is_success;
- # formulaire de login
- my $form = ( HTML::Form->parse( $res->content, $base ) );
- # remplit les champs
- $form->find_input('user')->value($user);
- $form->find_input('pass')->value($pass);
- # valide et renvoie le formulaire
- my $res2 = $ua->request( $form->click );
- print $res2->content;
- my $form2 = HTML::Form->parse( $res2->content );
|
Merci d'avance,
Emmanuelle
Message édité par manuche59 le 14-10-2009 à 15:45:31