首页 > 解决方案 > 使用 Volley 使用 StringRequest 时出现 AuthFailure 错误

问题描述

我发送 Volley StringRequest 如下

    StringRequest getRequest = new StringRequest(Request.Method.GET, myUrl,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response) {
                    try {
                        if (response!=null)
                        {
                           //do some work
                        }
                    }
                    catch (Exception e)
                    {
                        Log.d("error",e.getMessage());
                    }
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub
                    Log.d("error",error.toString());
                }
            }
    ) {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            String token = "",cookie="";
            token = getSharedPreferences(getResources().
                    getString(R.string.pref_login_data), Context.MODE_PRIVATE)
                    .getString("login_token","");
            cookie = "token="+token+";";
            Map<String, String>  param = new HashMap<String, String>();
            param.put("api-key", myAPIKey);
            param.put("Cookie", cookie);
            return param;
        }
    };
    Volley.newRequestQueue(this).add(getRequest);

每次调用 onErrorResponse 都会给出 AuthFailure Error

但是当我在邮递员中点击具有相同标题的相同网址时,它可以工作并返回 json 字符串邮递员的屏幕截图如下:

邮递员回应

我正在努力解决这个问题超过 3 天,任何帮助将不胜感激

标签: androidandroid-volley

解决方案


只需将 Request.Method.GET 更改为 Request.Method.POST。

因为你是通过 POST 方法发送参数,但是你使用了 Get 方法!


推荐阅读