我正在使用HTTP::Tiny
来做一个示例http客户端(只有get和post请求)。 GET
请求工作正常但我尝试执行POST
请求时遇到问题。这是代码:
sub postRequest {
my %params = @_;
my $url= "http://localhost:3001/Perform";
my %opt;
$opt{content} = \%params;
my $http = HTTP::Tiny->new();
my $response = $http->request("POST", $url, \%opt);
# my $response = $http->post($url, {content => \%params}); # not working too
unless ($response->{success}) {
die "Unsuccessful request to " . $url. "\n";
}
print "response: " . $response->{content} . "\n";
return $response->{content};
}
%params
哈希就像{ key1 => "val1", key2 => "val2" }
一样。我得到的消息是Attempt to use reference as lvalue in substr at /usr/lib/perl5/vendor_perl/5.22/HTTP/Tiny.pm line 806, <STDIN> line 7.
,我不知道如何解决它。
答案 0 :(得分:3)
看起来你真的想要:
$http->post_form($url, \%params);
答案 1 :(得分:1)
HTTP::Tiny::request
的文档允许哈希引用\%options
$response = $http->request($method, $url, \%options);
并且其密钥说明如下
有效选项包括:
标题[...]
content - 包含作为请求正文的标量或将迭代调用以生成请求正文的代码引用
这意味着content
键应该具有标量(字符串)或代码引用的值。代码中content
的值是哈希引用\%params
。
将其更改为字符串或代码引用。