我有下一个问题:
我有一个设备,它有一个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;
}
任何人都知道如何实现这个问题?有人可以帮帮我吗?
答案 0 :(得分:3)
authorization_basic
对standard HTTP authentication有好处,但Web表单有所不同。删除该方法调用并了解Web表单的运行方式。
以下是对代码进行最简单的更改以使其正常工作。请注意,我们直接在表单的action
属性中定位资源。
my $u = URI->new('http://IP_device/Action_Login');
$u->query_form(LOGINPASSWORD => 'password123');
my $req = HTTP::Request->new(GET => $u->as_string);