Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PERL中使用表单数据设置HTTP::请求的内容_Perl_Http_Post - Fatal编程技术网

如何在PERL中使用表单数据设置HTTP::请求的内容

如何在PERL中使用表单数据设置HTTP::请求的内容,perl,http,post,Perl,Http,Post,我想通过http post方法发送表单数据。因此,我想用适当的数据设置一个HTTP::Request,但我不知道如何做到这一点。我想做这样的事情 use strict; use warnings; use 5.010; use LWP::UserAgent; use HTTP::Headers; use HTTP::Request; my $browser = LWP::UserAgent->new(); my $header = HTTP::Headers->new(); my

我想通过http post方法发送表单数据。因此,我想用适当的数据设置一个
HTTP::Request
,但我不知道如何做到这一点。我想做这样的事情

use strict;
use warnings;
use 5.010;

use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request;

my $browser = LWP::UserAgent->new();
my $header = HTTP::Headers->new();
my $data;

# What I have to do here to initialize $header and $data
# with name=Pete and age=35 for example 

my $request = HTTP::Request->new( POST, "http://www.example.com", $header, $data );

my $response = $browser->request( $request );

say $response->as_string();

exit;

我还没有找到任何使用HTTP::Request的完整示例。使用LWP::Simple是不可能的。

您可以向
LWP::UserAgent
对象的
post
方法提供表单值。从:

$ua->post($url,\%form)

$ua->post($url,\@form)

$ua->post($url,\%form,$field\u name=>$value,…)

$ua->post($url,$field\u name=>$value,…Content=>\%form)

$ua->post($url,$field\u name=>$value,…Content=>\@form)

$ua->post($url,$field\u name=>$value,$Content=>$Content)

此方法将在给定的
$url
上发送POST请求,
%form
@form
为填写表单内容提供键/值对

与使用
get
方法一样,您可以通过将头作为名称/值对传递来生成附加头。以下内容将
发布
%form
中的表单数据,并设置
Cookie
标题:

my %form = (
    foo    => 'bar',
    answer => 42
);

my $ua = LWP::UserAgent->new;
$ua->post( 'http://www.example.com', Cookie => $cookie, \%form );

这实际上是在后台使用的
POST
函数来生成请求。
HTTP::Request::Common
文档介绍了如何生成更复杂的请求。

HTTP::Request是的一个子类。我想你会在那里找到你想要的方法。

这不是我想要的。我需要对
HTTP::Request
进行完全控制,我对全部细节感兴趣。你说的“完全控制”是什么意思?您还可以在
post
方法中设置头,这样我就不知道您还需要什么。另外,请注意
LWP::UserAgent
用于生成请求,因此可以向
HTTP::request::Common
post请求添加任何内容,您可以添加到
LWP::UserAgent
post
。您可能需要查看WWW::Mechanize,它是一个围绕LWP::UserAgent的包装器,使发布和其他常见任务变得非常容易。