Spotify创建播放列表Java - 响应代码400,"解析JSON"

时间:2018-04-23 23:12:46

标签: java spotify playlist

我正在尝试使用Spotify API创建播放列表,我正在使用Java将POST请求写入Spotify API端点。当我检索访问令牌时,我还包括Spotify的每个可用范围。这将返回一个响应,其错误消息为:

{"错误":{"消息":"解析JSON时出错。","状态":400}}

这就是我所拥有的:

String http = "https://api.spotify.com/v1/users/" + userId + "/playlists";

CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(http);

JsonObject entityObj = new JsonObject();
JsonObject dataObj = new JsonObject();
dataObj.addProperty("name", "title");
dataObj.addProperty("public", "false");
entityObj.add("data", dataObj);

String dataStringify = GSON.toJson(entityObj);
StringEntity entity = new StringEntity(dataStringify);
post.setEntity(entity);

post.setHeader("Authorization", "Bearer " + accessToken);
post.setHeader("Content-Type", "application/json");

CloseableHttpResponse response = client.execute(post);

System.out
    .println("Response Code : " + response.getStatusLine().getStatusCode());
String resp = EntityUtils.toString(response.getEntity());
JSONObject responseObj = new JSONObject(resp);
System.out.println(responseObj);

client.close();

如果您对错误有任何见解,请告诉我。

1 个答案:

答案 0 :(得分:0)

我假设您使用的是org.json库以及Google的Gson库。在这种情况下使用两者都没有意义。你不需要

String dataStringify = GSON.toJson(entityObj);

as entity Object已经是JSON对象。 entityObj.toString()就足够了。 您发送的当前JSON数据如下所示:

{
 "data":
   {
    "name":"title",
    "public":"false"
   }
}

Spotify要求这样的JSON对象:

{
  "name": "New Playlist",
  "public": false
}

您只需发送数据对象dataObj。