使用凌空验证失败

Authentication failed using volley

我正在尝试从服务器 (Laravel) 获取令牌并保存到数据库 (android) 但是当向服务器发送请求时我收到此错误:

E/Volley: [276] BasicNetwork.performRequest: Unexpected response code 401 for http://192.168.1.4:8000/api/user/login
E/Volley: [276] BasicNetwork.performRequest: Unexpected response code 401 for http://192.168.1.4:8000/api/user/login
D/error: com.android.volley.AuthFailureError

android代码(java):

  public void loginUser(String email, String password, final OnLoginResponse onLoginResponse){
            JSONObject requestJsonObject=new JSONObject();
            try {
                requestJsonObject.put("email",email);
                requestJsonObject.put("password",password);
            JsonObjectRequest request=new JsonObjectRequest(Request.Method.POST, "http://192.168.1.4:8000/api/user/login",requestJsonObject , new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                    onLoginResponse.onResponse(response.optString("token"));

                    Log.d("response",response.toString());
                }

            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("error",error.toString());
                }
            }) {
                /**
                 * Passing some request headers*
                 */
                @Override
                public Map getHeaders() throws AuthFailureError {
                    HashMap headers = new HashMap();
                    headers.put("Content-Type", "application/json");
                    headers.put("csrf-token", "X-XSRF-TOKEN");

                    return headers;
                }
            };
            request.setRetryPolicy(new DefaultRetryPolicy(18000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            Volley.newRequestQueue(context).add(request);
        } catch (JSONException e) {
            Log.e(TAG, "loginUser: "+e.toString());
        }
    }

我使用 postman 检查了客户端,这没有问题,return 令牌没有问题。

这是邮递员的截图:

enter image description here

问题可能在于:

  • header

  • 一旦到达函数 login(...)

  • ,变量名和密码可能会传递空错误或格式错误
  • 参数(也许你对后端有更多的期待)
  • 可能是后端的问题(可能是与 csrf-token header 有关的 TokenMismatchException 我在你的 Android Java 代码中看到