Android Volley.NET Rest令牌授权失败

Android Volley.NET Rest令牌授权失败,android,asp.net-web-api,android-volley,token,Android,Asp.net Web Api,Android Volley,Token,我正在尝试使用WebAPI的内置.NET框架,该框架使用令牌身份验证系统。这些API正在Android中使用Volley 所以这些API在postman中测试时工作得非常好,所以我将分享一个postman配置的屏幕截图,下面是我在Android中使用的代码 调用此函数时,根据传递参数和头的方式,会出现以下错误之一: com.android.volley.ServerError com.android.volley.AuthFailureError 我不确定哪一个错误首先出现,也就是说,它能在A

我正在尝试使用WebAPI的内置.NET框架,该框架使用令牌身份验证系统。这些API正在Android中使用Volley

所以这些API在postman中测试时工作得非常好,所以我将分享一个postman配置的屏幕截图,下面是我在Android中使用的代码

调用此函数时,根据传递参数和头的方式,会出现以下错误之一:

  • com.android.volley.ServerError

  • com.android.volley.AuthFailureError

  • 我不确定哪一个错误首先出现,也就是说,它能在
    AuthFailureError
    之前或之后抛出服务器错误,因此很难确定它是否曾经授权,或者URL参数是否正确传递

    有人知道我做错了什么吗?我一直在搜索StackOverFlow,但什么都不管用

    另外,对于所有的黑色衬里和敏感信息,我也很抱歉:D

    试试这个

    public static void getUserDetails(final String userId, final String token, RequestQueue requestQueue){
    
    StringRequest stringRequest = new StringRequest(Request.Method.GET,
            apiPath + "API/points/getUserDetails?UserId=" + userId,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
    
                    Log.i("API", response);
                }
            }, new Response.ErrorListener() {
    
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("API", error.toString());
    
        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError{
            Map<String, String> params = new HashMap<String, String>();
            params.put("Authorization", "Bearer " + token);
            return params;
        }
    };
    
    requestQueue.add(stringRequest);
    
    publicstaticvoid getUserDetails(最终字符串用户ID、最终字符串令牌、请求队列){
    StringRequest StringRequest=新StringRequest(Request.Method.GET,
    apiPath+“API/points/getUserDetails?UserId=“+UserId,
    新的Response.Listener(){
    @凌驾
    公共void onResponse(字符串响应){
    Log.i(“API”,响应);
    }
    },new Response.ErrorListener(){
    @凌驾
    公共无效onErrorResponse(截击错误){
    Log.i(“API”,error.toString());
    }
    }) {
    @凌驾
    公共映射getHeaders()引发AuthFailureError{
    Map params=新的HashMap();
    参数put(“授权”、“持票人”+代币);
    返回参数;
    }
    };
    添加(stringRequest);
    
    谢谢你的回答这对我来说很有用,但是你能给我解释一下getParams()的确切用途吗?有人会认为getParams()代替了你自己连接url字符串的需要?或者getParams只是用来提交表单数据吗?你不能在执行get请求时使用getParam
    public static void getUserDetails(final String userId, final String token, RequestQueue requestQueue){
    
        StringRequest stringRequest = new StringRequest(Request.Method.GET,
                apiPath + "API/points/getUserDetails",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
    
                        Log.i("API", response);
                    }
                }, new Response.ErrorListener() {
    
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.i("API", error.toString());
    
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("UserId", userId);
                return params;
            }
            @Override
            public Map<String, String> getHeaders(){
                Map<String, String> params = new HashMap<String, String>();
                params.put("Authorization", "Bearer " + token);
                return params;
            }
        };
    
        requestQueue.add(stringRequest);
    
    public static void getUserDetails(final String userId, final String token, RequestQueue requestQueue){
    
    StringRequest stringRequest = new StringRequest(Request.Method.GET,
            apiPath + "API/points/getUserDetails?UserId=" + userId,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
    
                    Log.i("API", response);
                }
            }, new Response.ErrorListener() {
    
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("API", error.toString());
    
        }
    }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError{
            Map<String, String> params = new HashMap<String, String>();
            params.put("Authorization", "Bearer " + token);
            return params;
        }
    };
    
    requestQueue.add(stringRequest);