2016-08-21 1 views
0

Perl 5에서 HTTP::Tiny에 대한 헤더를 설정하는 올바른 방법을 이해하는 데 어려움을 겪고 있습니다. 지금까지 해시, 해시 참조 및 다른 겉으로는 방법이 불가능한 무수한 예를 보았습니다.Perl에서 HTTP :: Tiny에 대한 사용자 정의 헤더를 설정하는 방법은 무엇입니까?

요청에 대한 헤더를 설정하는 올바른 방법은 무엇입니까? 전송되기 전에 요청을 보는 쉬운 방법은 무엇입니까?

는 여기에 몇 가지 예제 코드입니다 :

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

이 문제는 내가 바보가되고 세부 사항에 관심을 기울이지 않는 것과 관련이 있다는 것을 알 수 있습니다. 기본적으로,

    내가 진짜 돈 API를 사용하고 있었다
  1. 하지 않는 가짜 내가 제대로
  2. 내가 대신 '헤더'

의 'default_headers'을 설정 한 hashref를 사용하지 않은

  • `

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

    `