我正在尝试使用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。