【发布时间】:2017-09-11 15:14:21
【问题描述】:
见:https://developer.spotify.com/web-api/authorization-guide/
我正在使用“客户端凭据流”方法。
sub get_token {
my $req = HTTP::Request->new(POST => $SPOTIFY_TOKEN);
$req->header('Authorization' => 'Basic MYBASE64HERE');
my $post_data = 'grant_type=client_credentials';
$req->content($post_data);
my $resp = $ua->request($req); #this is LWP
if ($resp->is_success) {
my $token = $resp->decoded_content;
print "$token\n";
return \$token;
}
else {
print "HTTP POST error code: ", $resp->code, "\n";
print "HTTP POST error message: ", $resp->message, "\n";
}
}
我回HTTP POST error code: 400 / bad request
我知道它与标题信息或 URL 无关。我通过 Curl 进行了测试,并使用 Data::Dumper 来验证它的格式是否正确。
我不确定发送 POST 正文数据所需的格式。我试过上面的例子my $post_data = 'grant_type=client_credentials'; 以及我能想到的每一个变化。在 Perl 中使用 HTPP::Request 构建 POST 请求是否有正确的方法?
【问题讨论】:
-
如果你这样做有什么改变吗:
my $resp = $ua->post($SPOTIFY_URL_INCLUDING_TOKEN, 'Authorization' => 'Basic MYBASE64HERE', Content => { grant_type => 'client_credentials' });?