Ошибка аутентификации с использованием залпа - PullRequest
0 голосов
/ 09 марта 2019

Я пытаюсь получить токен от сервера (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());
        }
    }

Я проверил клиента с помощью почтальона, это не проблема, и вернул токен без проблем.

это скриншот почтальона:

введите описание изображения здесь

1 Ответ

0 голосов
/ 10 марта 2019

Вероятно, проблема связана с:

  • заголовками

  • имя переменной и пароль могут быть переданы пустыми неправильно или неправильно сформированы, как только онидостигните функции login (...)

  • параметров (возможно, вы ожидаете большего от серверной части)
  • может быть проблемой в серверной части (вероятно, TokenMismatchException, которая связана с* Заголовок csrf-token Я вижу в вашем Android код Java
...