Веб-форма автоматического входа

У меня следующая проблема:

У меня есть устройство, на котором есть страница xml (http://IP_device/counters.xml), я хочу отслеживать этот файл для извлечения некоторой информации. Проблема возникает из-за того, что для доступа к этому файлу ранее я должен войти в форму (http://IP_device/frameCmd_Login.htm) следующим образом:

<form method="get"  action="/Action_Login" onsubmit="return MD5HASH()">
<font color="#000000" align="center">Please Enter Password</font>
<input size="21" type="password" value="" name="LOGINPASSWORD" id="PD" />
<input name="submit" type="submit" value="LOGIN" />

Для этого мне нужно войти в форму до (http://IP_device), а затем загрузить файл xml.

Я пробовал с модулями LWP, URL, но не знаю, как это сделать. Я новичок в Perl. Perl-скрипт, который я пробовал:

#!/usr/bin/perl
use LWP::UserAgent;

my $ua = new LWP::UserAgent;
my $req = new HTTP::Request(GET => 'http://IP_device/frameCmd_Login.htm'); 
$req->authorization_basic("password123");

my $res = $ua->request($req);

if ($res->is_success) 
{
    my $file = $res->content;
    print $file;
} 
else 
{
    die $res->status_line;
}

Кто-нибудь знает, как решить эту проблему? Кто-нибудь может мне помочь?


person dseira    schedule 29.12.2011    source источник


Ответы (1)


authorization_basic подходит для стандартная HTTP-аутентификация, но веб-формы — это нечто другое. Удалите вызов этого метода и узнайте, как функционируют веб-формы.

Ниже приведено самое простое изменение вашего кода, чтобы заставить его работать. Обратите внимание, что мы напрямую нацеливаемся на ресурс в атрибуте action формы.

my $u = URI->new('http://IP_device/Action_Login');
$u->query_form(LOGINPASSWORD => 'password123');
my $req = HTTP::Request->new(GET => $u->as_string);
person daxim    schedule 29.12.2011
comment
В порядке. попробую с вашим кодом. Я ошибся в URI; правильный URI — Action_Login. Спасибо. - person dseira; 02.01.2012