使用URL中的GET变量发送POST请求(使用LWP :: UserAgent)

时间:2013-02-22 01:20:14

标签: perl post get lwp lwp-useragent

我必须向一个包含GET变量(查询字符串)的URL发出POST请求。

我尝试了以下内容(看起来像simepl /逻辑方式最多),但它不起作用:

my $ua = LWP::UserAgent->new;
my $res = $ua->post('http://my.domain/index.pl?login=yes', {
    username => $username, 
    password => $password
});

my.domain / index.pl确实接收到任何请求,但只要删除查询字符串“?login = yes”,请求就会正常运行。

1 个答案:

答案 0 :(得分:2)

my $res = $ua->post('http://my.domain/index.pl?login=yes', {
    username => $username, 
    password => $password
});

归结为

use HTTP::Request::Common qw( POST );

my $req = POST('http://my.domain/index.pl?login=yes', {
    username => $username, 
    password => $password,
});

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

通过使用print $req->as_string();,您可以看到它完全符合您的说法。

POST http://my.domain/index.pl?login=yes
Content-Length: 35
Content-Type: application/x-www-form-urlencoded

password=PASSWORD&username=USERNAME

问题出在其他地方。