Spotify创建播放列表Java-响应代码400,“错误解析JSON”



我正在尝试使用Spotify API创建播放列表,并且我将邮政请求写入Java中的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();

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

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

String dataStringify = GSON.toJson(entityObj);

作为实体对象已经是一个JSON对象。EntityObj.toString((应该足够了。您发送的当前JSON数据看起来像这样:

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

Spotify要求这样的JSON对象:

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

您只需要发送数据对象dataobj。

最新更新