0

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

我尝试了以下方法(看起来是最简单/合乎逻辑的方式),但它不起作用:

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”,请求就会正常工作。

4

1 回答 1

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

问题在别处。

于 2013-02-22T01:24:45.397 回答