如何解决在 Android 中使用 volley (java) 调用 Youtbe api 时出现客户端错误 400
我正在尝试使用 youtube API 创建一个播放列表。 我拥有所有必需的令牌和密钥 - API 密钥、用户授权后获得的访问令牌。
我正在使用 volley 来处理我的帖子请求,但我收到了 ClientError 400 并且我无法解决它。
注意:它适用于邮递员,我收到了响应 JSON。
这里提到了参数、正文和标题:https://developers.google.com/youtube/v3/docs/playlistItems/insert
HTTP 请求如下:
POST https://youtube.googleapis.com/youtube/v3/playlists?part=snippet%2Cstatus&key=[YOUR_API_KEY] HTTP/1.1
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Accept: application/json
Content-Type: application/json
{
"snippet": {
"title": "Sample playlist created via API"
}
}
这是我的代码。
private void createYoutubePlaylist(){
String endPoint = "https://www.googleapis.com/youtube/v3/playlists";
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest req = new JsonObjectRequest(Request.Method.POST,endPoint,createPlaylistReqBody("my playlist","hello","en"),new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("demo",response.toString());
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("demo",String.valueOf(error.networkResponse.statusCode));
}
}){
@Override
public Map<String,String> getHeaders() throws AuthFailureError{
HashMap<String,String> headers = new HashMap<String,String>();
Log.d("demo","the gaccesstoken is : " + GoogleAPIAccesstoken);
headers.put("Authorization","Bearer " + GoogleAPIAccesstoken);
//headers.put("Content-type","application/json");
return headers;
}
@Override
public Map<String,String> getParams(){
HashMap<String,String> params = new HashMap<String,String>();
params.put("part","snippet");
params.put("key",API_KEY);
return params;
}
// @Override
// public byte[] getBody(){
// String body;
// body = createPlaylistReqBody("my test playlist","this is a test playlist","en");
// return body.getBytes();
// }
@Override
public String getBodyContentType() {
return "application/json";
}
};
queue.add(req);
}
private JSONObject createPlaylistReqBody(String title,String description,String defaultLanguage ){
JSONObject json = new JSONObject();
try {
json.put("title",title);
//json.put("description",description);
//json.put("defualtLanguage",defaultLanguage);
} catch (JSONException e) {
e.printstacktrace();
}
JSONObject finalJSON = new JSONObject();
try {
finalJSON.put("snippet",json);
} catch (JSONException e) {
e.printstacktrace();
}
String jsonString = finalJSON.toString();
Log.d("demo","the json string is :");
Log.d("demo",jsonString);
return finalJSON;
}
这是我得到的错误 JSON
{"error":{"code":400,"message":"'snippet'","errors":[{"message":"'snippet'","domain":"youtube.part","reason":"unexpectedPart","location":"part","locationType":"parameter"}]}}
注意:GoogleAPIAccesstoken 和 API_KEY 在函数调用之前被初始化。所以它们不是空字符串。
请让我知道我哪里出错了。提前致谢!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。