2016-08-21 3 views
0

Ich habe einige Probleme, den richtigen Weg zu verstehen, Header für HTTP::Tiny in Perl 5 zu setzen. Bisher habe ich Beispiele für Hashes, Hash-Referenzen und eine Vielzahl von anderen scheinbar unaussprechlichen Möglichkeiten gesehen.Wie setze ich benutzerdefinierte Header für HTTP :: Tiny in Perl?

Wie können die Header für eine Anfrage richtig eingestellt werden? Was ist eine einfache Möglichkeit, die Anfrage vor dem Senden anzuzeigen?

Hier einige Beispiel-Code:

#!/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}; 

Und es mir ein 401.

Vielen Dank schenkt!

Antwort

0

Es stellte sich heraus, dass das Problem viel damit zu tun hatte, dass ich dumm war und nicht auf die Details achtete. Grundsätzlich

  1. ich das echte Geld api wurde mit, nicht die Fälschung eines
  2. Ich war kein hashref richtig
  3. ich mit einstellen ‚default_headers‘ anstelle von ‚Header‘

`

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}; 

`

Verwandte Themen