我正在尝试使用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();
如果您对错误有任何见解,请告诉我。
答案 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。