在 Perl 中为 HTTP 请求 headers 使用变量
Using variable for HTTP request headers with Perl
我正在尝试编写一个函数来在 Perl 中创建 HTTP 请求(POST 并且主要是 GET)。我通过使用变量使所有内容保持通用,这样我就不必担心请求的类型、有效负载、headers 等,但是 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'";
如果有帮助,我可以 post 更多代码。我希望一些 Perl 大师会确切地知道我做错了什么。我确定这与我传入的字符串的格式有关。
@headers = "'x-auth-token' => '$_token'";
header 函数需要传递 两个 个参数。 header 名称和 header 值。
您正在传递它 一个 参数:一个包含 Perl 代码片段的字符串。
您需要更明智地格式化您的数据。
my %headers = (
"x-auth-token" => $_token;
);
和
foreach my $header_name (keys %headers) {
$req->push_header($header_name => $headers{$header_name});
}
我正在尝试编写一个函数来在 Perl 中创建 HTTP 请求(POST 并且主要是 GET)。我通过使用变量使所有内容保持通用,这样我就不必担心请求的类型、有效负载、headers 等,但是 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'";
如果有帮助,我可以 post 更多代码。我希望一些 Perl 大师会确切地知道我做错了什么。我确定这与我传入的字符串的格式有关。
@headers = "'x-auth-token' => '$_token'";
header 函数需要传递 两个 个参数。 header 名称和 header 值。
您正在传递它 一个 参数:一个包含 Perl 代码片段的字符串。
您需要更明智地格式化您的数据。
my %headers = (
"x-auth-token" => $_token;
);
和
foreach my $header_name (keys %headers) {
$req->push_header($header_name => $headers{$header_name});
}