簡體   English   中英

如何使用LWP :: UserAgent在BOX API中發出發布請求?

[英]How to make the post request in BOX API using LWP::UserAgent?

我嘗試了以下代碼

my $url = "https://api.box.com/2.0/users/";

use strict;
use warnings;

use LWP::UserAgent; 
use HTTP::Request::Common qw{ POST };
use CGI;

my $ua      = LWP::UserAgent->new();
my $request = POST( $url, [ 'name' => 'mkhun', 'is_platform_access_only' => 'true',"Authorization" => "Bearer <ACC TOK>" ] );
my $content = $ua->request($request)->as_string();

my $cgi = CGI->new();
print $cgi->header(), $content;

上面的代碼始終給出400錯誤。 然后扔

{"type":"error","status":400,"code":"bad_request","context_info":{"errors":[{"reason":"invalid_parameter","name":"entity-body","message":"Invalid value 'is_platform_access_only=true&Authorization=Bearer+WcpZasitJWVDQ87Vs1OB9dQedRVyOrs6&name=mkhun'. Entity body should be a correctly nested resource attribute name\/value pair"}]},

我不知道是什么問題。 Linux curl同樣適用。

curl https://api.box.com/2.0/users \
-H "Authorization: Bearer <TOKEN>" \
-d '{"name": "Ned Stark", "is_platform_access_only": true}' \
-X POST

Box API文檔說

請求主體數據和響應數據都被格式化為JSON

您的代碼改為發送表單編碼的數據

同樣,看起來Authorization應該是HTTP標頭,而不是表單字段。

嘗試以下方法:

use strict;
use warnings;

use LWP::UserAgent;
use JSON::PP;

my $url = "https://api.box.com/2.0/users/";
my $payload = {
    name => 'mkhun',
    is_platform_access_only => \1,
};

my $ua = LWP::UserAgent->new;

my $response = $ua->post(
    $url,
    Authorization => 'Bearer <TOKEN>',
    Content => encode_json($payload),
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM