2016-08-21 5 views
0

У меня возникли проблемы с пониманием правильного способа установки заголовков для HTTP::Tiny в Perl 5. До сих пор я видел примеры хешей, хеш-ссылок и множество других, казалось бы, нескладных способов.Как настроить пользовательские заголовки для HTTP :: Tiny в Perl?

Каков правильный способ настройки заголовков для запроса? Какой простой способ просмотреть запрос до его отправки?

Вот несколько примеров кода:

#!/usr/bin/env perl                                            
use 5.12.1;                                              
use HTTP::Tiny;                                             

my $api_key = "::";                                            

my %headers = (Authorization => sprintf 'Bearer %s', $api_key);                                    
my $url = "https://api-fxpractice.oanda.com/v3/accounts";                                   

my $response = HTTP::Tiny->new($url, 
    default_headers => {'Content-Type' => 'application/json'});                

my $response = HTTP::Tiny->new->get($url, { default_headers => \%headers });                              

print "$response->{status} $response->{reason}\n";                                                 
while (my ($k, $v) = each %{ $response->{headers} }) { 
     print "$k: $_\n"; 
    }                                               
} 

print $response->{content} if length $response->{content}; 

И это дает мне 401.

Спасибо!

ответ

0

Оказывается, проблема имела много общего с тем, что я был глупым и не обращал внимания на детали. В основном,

  1. Я использовал реальные деньги апи, а не подделка один
  2. я не использовал hashref правильно
  3. Я настройка «default_headers» вместо «заголовки»

`

my $api_key = "::" 

my %headers = (
    "Content-Type" => "application/json", 
    "Authorization" => sprintf 'Bearer %s', $api_key); 

my $url = "https://api-fxpractice.oanda.com/v1/accounts"; 

my $response = HTTP::Tiny->new->get($url, { headers => \%headers }); 

print "$response->{status} $response->{reason}\n"; 

while (my ($k, $v) = each %{ $response->{headers} }) { 
    for (ref $v eq 'ARRAY' ? @$v : $v) { 
     print "$k: $_\n"; 
    } 
} 

print $response->{content} if length $response->{content}; 

`