2011-12-29 16 views
0

私は次の問題があります。自動ログインWebフォーム

を私はそれがXMLページを持つデバイスを持っています(http://IP_device/counters.xml)、私は、抽出物のためのいくつかの情報を、このファイルを監視します。 (私は前にフォームにログインする必要があり、そのために

<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" /> 

:このような:(//IP_device/frameCmd_Login.htm HTTP)、このファイルへのアクセスのために、以前に私がフォームにログインする必要がありますので、問題が来ます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; 
} 

誰でもこの問題を解決する方法はありますか?誰でも私を助けることができますか?

答えて

3

authorization_basicstandard HTTP authenticationには適していますが、ウェブフォームは異なるものです。そのメソッド呼び出しを削除し、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); 
+0

あなたのコードを試してみます。私はURIで間違っていた。正しいURIはAction_Loginです。ありがとう。 – dseira

関連する問題