【问题标题】:spotify web api with java用 java 发现 web api
【发布时间】:2020-01-21 08:37:08
【问题描述】:

我想在 spotify 数据库中进行一些搜索,仅用于学习 rest 应用程序的目的。 我被困在第一点 https://developer.spotify.com/documentation/general/guides/authorization-guide/ 授权码流程 使用 java 应用程序登录 spotify:

package spotify;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/*
    1) https://developer.spotify.com/dashboard/applications
*/

public class SpotifyMain {

    static final String CLIENTID = "blablablablablablablabla";
    static final String CLIENTSECRET = "blablablablablablablabla";
    static final String REDIRECTURL = "https://github.com/blablablablablablablabla"; //whiltelisted set inside spotify

    public static void main(String[] args) {
        try {
            String url_auth = 
            "https://accounts.spotify.com/authorize?"
            + "client_id="+CLIENTID+"&"
            + "response_type=code&"
            + "redirect_uri="+REDIRECTURL+"&"
            + "scope=user-read-private%20user-read-email&"
            + "state=34fFs29kd09";

            System.out.println(url_auth);

            URL url = new URL(url_auth);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Accept", "application/json");

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

            String output;
            System.out.println("Output from Server .... \n");
            while ((output = br.readLine()) != null) {
                System.out.println(output);
            }
            conn.disconnect();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

我收到错误 406。 我认为该 url 是正确的,因为如果我将该 url 放在浏览器中,它会正确显示应用程序想要访问某些资源。 如果我将该网址放在邮递员中,则错误会在 400 bad request 中发生变化...... 我错过了什么吗? 谢谢

【问题讨论】:

    标签: java rest spotify


    【解决方案1】:

    尝试删除此行:

    conn.setRequestProperty("Accept", "application/json");
    

    HTTP 406 错误为“不可接受”,这意味着服务器已生成无法作为请求的接受内容类型返回的回复。

    【讨论】:

    • 这可能是身份验证问题。检查您的客户 ID 是否有效
    • 如果我复制/粘贴显示的内容:System.out.println(url_auth);在浏览器中,显示一个网页,请求如下:developer.spotify.com/assets/oauth.png 但在 java 应用程序上给了我这个错误,所以 clientid 是正确的
    • 如果我从 spotify 复制/粘贴示例:示例将他的重定向 url 列入白名单-> 典型的请求是 /authorize 端点的 GET 请求,后跟查询:GET accounts.spotify.com/… 在浏览器中有效,但如果我把那个地址放在我的代码中会给我同样的错误
    猜你喜欢
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 2012-06-23
    • 2017-06-03
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多