使用凌空验证失败
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 代码中看到
我正在尝试从服务器 (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 代码中看到