如何修复“ com.android.volley.AuthFailureError”,“ message”:“需要验证”,“ type”:“ access_forbidden”

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

标签: android json api

我想获取Dailymotion的趋势视频列表,但我不知道在哪里以及如何使用Dailymotion api键...

我也参考了此链接How to get dailymotion videos list,但无法解决...我应该更改url或api键的放置吗?预先感谢。

公共类VideoList扩展了AppCompatActivity {     公共静态最终字符串url =“ https://api.dailymotion.com/videos”;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video_list);
    loadvideos();

}

private void loadvideos() {
    final Map<String,String> jsonparams=new HashMap<String, String>();
    jsonparams.put("API Key","74d97adcb4cd05bc4efe");

    StringRequest stringRequest=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d("Volley","onResponse"+response);


        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("Volley","onErrorResponse"+error);
            if(error.networkResponse.data!=null){
                try {
                    VolleyLog.d(new String(error.networkResponse.data,"UTF-8"));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            }

        }
    }){
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String,String> header= new HashMap<String, String>();

            header.put("Content-Type", "application/json; charset=UTF-8");
            String credentials="74d97adcb4cd05bc4efe";
            String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
            HashMap<String, String> headers = new HashMap<>();
            headers.put("Authorization", "Basic " + base64EncodedCredentials);
            return header;

        }


       @Override
       public byte[] getBody() throws AuthFailureError {

           JSONObject jsonObject = new JSONObject();
           try {
               jsonObject.put("API Key","74d97adcb4cd05bc4efe");
                } catch (JSONException e) {
               e.printStackTrace();
           }

           String requestBody = jsonObject.toString();
           Gson gson=new Gson();
           String json=gson.toJson(jsonparams);


           try {
               return json == null ? null : json.getBytes("utf-8");
           } catch (UnsupportedEncodingException uee) {
               VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", json, "utf-8");
               return null;
           }
       }
    };
    RequestQueue requestQueue=Volley.newRequestQueue(VideoList.this);
    requestQueue.add(stringRequest);
}

}

Logcat:12-24 02:25:30.779 23865-24155 / com.example.ayaz.videodownloader E / Volley:[16289] BasicNetwork.performRequest:https://api.dailymotion.com/videos的意外响应代码403 12-24 02:25:30.996 23865-24155 / com.example.ayaz.videodownloader E / Volley:[16289] BasicNetwork.performRequest:https://api.dailymotion.com/videos的意外响应代码403 12-24 02:25:30.998 23865-23865 / com.example.ayaz.videodownloader D / Volley:onErrorResponsecom.android.volley.AuthFailureError 12-24 02:25:30.999 23865-23865 / com.example.ayaz.videodownloader D / Volley:[1] 2.onErrorResponse:{“错误”:{“ more_info”:“ https://developer.dailymotion.com / api#error-codes“,” code“:403,” message“:”需要验证。“,” type“:” access_forbidden“}}

0 个答案:

没有答案