【问题标题】:Sending Post Data via LWP (Request built by HTTP::Request) for Spotify API通过 LWP(由 HTTP::Request 构建的请求)为 Spotify API 发送帖子数据
【发布时间】: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' });?

标签: perl spotify


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我的 $post_data = "grant_type=client_credentials";

    原来这就是答案。我不知道我以前是怎么错过的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2013-01-15
      • 1970-01-01
      • 2016-03-29
      • 1970-01-01
      相关资源
      最近更新 更多