Perl:需要一个LWP和HTTP :: Request实际有效的POST代码

时间:2018-06-20 03:34:28

标签: perl post httprequest lwp

我一直在努力尝试获取LWP和HTTP :: Request以实际将POST参数传递给Web服务器。 Web服务器可以看到该请求是POST事务的事实,但是它没有选择传递的参数。我整天都在搜索此内容,并尝试了不同的方法,但尚未找到可行的方法。 (Web服务器正在工作,我能够手动发送后期交易,并且在运行整个脚本时,我的状态为“ 200”,但看不到任何发布的元素。任何帮助将不胜感激。Tnx。

Within dialog (after set) > user1 
Within MC (end) >

2 个答案:

答案 0 :(得分:3)

my $res = $ua->post($url,
   Content => [
      'frm-advSearch' => 'frmadvSearch',
   ],
);

简写

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

my $req = POST($url,
   Content => [
      'frm-advSearch' => 'frmadvSearch',
   ],
);

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

答案 1 :(得分:1)

这是一个Mojo::UserAgent的示例,我发现它更容易调试:

use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
$ua->transactor->name( 'Mozilla/5.0 (compatible; MSIE 6.0; Windows 98)' );

my $url = 'http://www.example.com/form/';
my $tx = $ua->post( $url, form => { 'frm-advSearch' => 'frmadvSearch' } );
say $tx->req->to_string;

$tx中的事务知道请求,因此我可以看一下:

POST /form/ HTTP/1.1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (compatible; MSIE 6.0; Windows 98)
Accept-Encoding: gzip
Host: www.example.com
Content-Length: 26

frm-advSearch=frmadvSearch