HTTP::Requestを使う
use strict; use warnings; use HTTP::Request::Common; use LWP::UserAgent; my $name = "YOURNAME"; my $pass = "YOURPASS"; my $ua = LWP::UserAgent->new; my $req = HTTP::Request::Common::POST( "http://YOURDOMAIN/test/test.php", [ foo => 'bar', ] ); $req->authorization_basic($name, $pass); my $res = $ua->request($req); die $res->status_line if $res->is_error; print $res->decoded_content;
HTTPプロトコルをよく理解できていないとアカンとつくづく思う。「perldoc -l HTTP::Request」でソースの位置を確認し、cdするその後に「grep -rn "^sub" * | wc -l」でHTTP以下のメソッドをご確認すると237個もありました。authorization_basicはHeaders.pmの中にある。
下記はLWP::UserAgentのcredentialメソッドを使った場合。realmというのは.htaccessに書いた「AuthName」の部分。$resはHTTP::Responseが入ってくる。よくよく考えるとHTTP::Requestのauthorization_basicメソッドがHeaders.pmにあるのは当然ということが理解できた。
use strict; use warnings; use LWP::UserAgent; my $ua = LWP::UserAgent->new; my $realm = 'YOUR AuthName'; $ua->credentials("localhost:80", $realm, 'ID', 'PASS'); my $res = $ua->post("http://localhost/foo/bar", [foo => 'yes']); print $res->decoded_content; #print ref $res;