使用Perl

时间:2015-12-15 13:46:09

标签: perl lwp

我正在尝试编写一个函数来在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大师能够准确地知道我做错了什么。我确定它与我传入的字符串的格式有关。

1 个答案:

答案 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});
}