サーバー(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
アンドロイドコード(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を使用してクライアントをチェックしましたが、問題はなく、問題なくトークンを返します。
これは郵便配達員のスクリーンショットです:
おそらく、問題は次のいずれかに依存しています。
ヘッダー
変数名とパスワードは、関数login(...)に到達すると、空で間違って渡されたり、不正な形式で渡されたりする可能性があります。
csrf-token
コードに表示されるヘッダーに関連するTokenMismatchExceptionですこの記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加