Hi! I'm trying to log in to a Web service using LWP::UserAgent but something
goes wrong in my script. The code I use is the following:
$agent = LWP::UserAgent->new();
push [at] {$agent->requests_redirectable}, 'POST';
$response = $agent->get($url);
die unless ($response->is_success);
[at] forms = HTML::Form->parse($response);
$forms[0]->value('myUsername', $login);
$forms[0]->value('myPassword', $password);
$forms[0]->value('cookie', $cookieValue);
$request = $forms[0]->click('Button1');
There are no warnings and as far as I can tell all is going fine. The site
redirects me even to the proper page after posting the form but indicates that
I haven't logged in to the service yet. For testing purposes I've tried giving
a false password in which case the service behaves as it should, insisting
retyping the password.
I used the WWW::Mechanize module to do the same login and it works fine:
my $mech = WWW::Mechanize->new();
$mech->get($url);
die unless ($mech->success);
$mech->submit_form(
form_number => 1,
button => 'Button1',
fields => {myUsername => $login,
myPassword => $password,
cookie => 'off',
}
);
Unfortunately using Mechanize doesn't solve my problem since I want to use the
UserAgent directly and pass it as argument for the Robot.pm. Any ideas what
might be going wrong in my first implementation?
Thanks,
Matti
