use LWP::UserAgent;
use Data::Dumper;
my $ua = new LWP::UserAgent;
$ua->agent("AgentName/0.1 " . $ua->agent);
my $req = new HTTP::Request POST => 'http://example.com';
$req->content('port=8', 'target=64'); #problem
my $res = $ua->request($req);
print Dumper($res->content);
如何使用$ req->内容发送多条内容? $ req->内容期望什么样的数据?
它只发送最后一个。
编辑:
如果我将其格式化为'port = 8& target = 64',则可以找到它。还有更好的方法吗?
答案 0 :(得分:14)
my $ua = LWP::UserAgent->new();
my $request = POST( $url, [ 'port' => 8, 'target' => 64 ] );
my $content = $ua->request($request)->as_string();
答案 1 :(得分:3)
给出的答案对我不起作用。我仍然遇到与OP相同的问题。
LWP::UserAgent的文档需要哈希或数组引用。
这有效:
my $url = 'https://www.google.com/recaptcha/api/siteverify';
my $ua = LWP::UserAgent->new();
my %form;
$form{'secret'}='xxxxxxxxxxxxxxxxxxxxxxx';
$form{'response'}=$captchaResponse;
my $response = $ua->post( $url, \%form );
my $content = $response->as_string();
答案 2 :(得分:1)
一起使用 LWP::UserAgent 和 HTTP::Request 因为它也很常见,如果不是更频繁的做法,我有点困惑,除了 json 之外,SO 几乎没有讨论标准的 POST 和 GET / 请求绝大多数使用。
发布
my $ua = LWP::UserAgent->new();
my $req = new HTTP::Request(
'POST' => "http://url/path",
['Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'],
'par1=par1value&par2=par2value'
);
$ua->request($req);
类似于 GET
my $ua = LWP::UserAgent->new();
my $req = new HTTP::Request(
'GET' => "http://url/path",
['Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'],
'par1=par1value&par2=par2value' # or I presume attaching the query string directly to the url
);
$ua->request($req);
另一种格式形式,其中前两个参数(method 和 url)没有融合成一个,不像前面那样,而是分开
my $request = HTTP::Request->new( 'POST', $url, [ parameter1 => 'parameter1Value' ] );
request->header( 'Content-Type' => 'application/json' )
有一个类似的问题,但只是关于 LWP 和 Json,但它可能只能通过同时使用 LWP 和 HTTP::Request 来完成,正如该问题选择的答案所建议的那样,并且缺少 POST 和 GET 但可能不是很明显
How can I make a JSON POST request with LWP?
注意: 我也特地发布了这个,因为即使在文档中也没有提到 POST/GET 的具体/简洁用法 https://metacpan.org/pod/HTTP::Request