我正在尝试编写一个函数来在Perl中创建HTTP请求(主要是POST和GET)。我通过使用变量保持一般通用,这样我就不必担心请求的类型,有效负载,标题等,但是HTTP :: Request-> header()似乎并不是喜欢我的变量:
my($req_type, $headers, $endpoint, $args, $request, $jsonfile) = @_;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new($req_type => $endpoint);
$req->content_type('application/json');
foreach (@$headers) {
$req->push_header($_);
}
$req->content($args);
$req->content($request);
print "request : ".$req->as_string;
我尝试了一些不同的方法,使用push_header让我最接近,但我意识到它可能不是最好的解决方案。我认为这可能与传入单引号有关:
@headers = "'x-auth-token' => '$_token'";
如果有用,我可以发布更多代码。我希望一些Perl大师能够准确地知道我做错了什么。我确定它与我传入的字符串的格式有关。
答案 0 :(得分:2)
@headers ="' x-auth-token' => ' $ _令牌'&#34 ;;
标头函数需要传递两个参数。标题名称和标题值。
您正在传递一个参数:包含Perl代码片段的字符串。
您需要更明智地格式化数据。
my %headers = (
"x-auth-token" => $_token;
);
和
foreach my $header_name (keys %headers) {
$req->push_header($header_name => $headers{$header_name});
}