通过LWP(由HTTP :: Request构建的请求)为Spotify API发送发布数据

时间:2017-09-10 00:14:56

标签: perl spotify

请参阅: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请求?

2 个答案:

答案 0 :(得分:0)

我认为以下应该有效,请尝试: $req->content(grant_type => 'client_credentials');

答案 1 :(得分:0)

my $ post_data =“grant_type = client_credentials”;

原来这就是答案。我不确定我之前是如何错过的。