【发布时间】:2017-08-03 13:54:10
【问题描述】:
我试过下面的代码
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
【问题讨论】:
-
true和'true'不是同一个意思。[ ... ]和{ ... }不可互换。 -
@SinanÜnür
[]和{}在使用 LWP 发布表单数据时几乎可以互换。 -
@melpomene 您假设接收方的软件不关心指定参数的顺序。不太可能,当然,但并非不可想象。