409 конфликтная ошибка только на вайфае только во время регистрации

Я пытаюсь зарегистрировать пользователя. Но процесс регистрации работает нормально с мобильными данными, но возвращает ошибку 409 в сети Wi-Fi. Мне ничего не известно об этой проблеме. Почтальон также возвращает конфликт 409.
Я получаю этот ответ в приложении для Android:

E/Volley: [88456] BasicNetwork.performRequest: Unexpected response code 409 for https://aayocab.com/api/provider/register/

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

Он работал нормально на начальном этапе проекта. Но теперь он начинает возвращать конфликт, и я стою перед дилеммой. Я реализовал следующим образом:

Код laravel для регистрации:

  public function register(Request $request)
{
    $this->validate($request, [
            'device_id' => 'required',
            'device_type' => 'required|in:android,ios',
            'device_token' => 'required',
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:providers',
            'mobile' => 'required',
            'password' => 'required|min:6|confirmed',
        ]);
    try{
        $Provider = $request->all();
        $Provider['password'] = bcrypt($request->password);
        $providerCode = 'p'.mt_rand(100, 999). mt_rand(100, 999);
        $Provider['provider_code'] = $providerCode;
        $Provider = Provider::create($Provider);

        if(Setting::get('demo_mode', 0) == 1) {
            $Provider->update(['status' => 'approved']);
            ProviderService::create([
                'provider_id' => $Provider->id,
                'service_type_id' => '1',
                'status' => 'active',
                'service_number' => '4pp03ets',
                'service_model' => 'Audi R8',
            ]);
        }
        ProviderDevice::create([
                'provider_id' => $Provider->id,
                'udid' => $request->device_id,
                'token' => $request->device_token,
                'type' => $request->device_type,
            ]);
        return $Provider;
    } catch (Exception $e) {
         return response()->json(['error' => trans('api.something_went_wrong')], 500);
    }     
}

Я проанализировал данные в приложении andorid следующим образом:

 private void registerAPI() {

    customDialog = new CustomDialog(context);
    customDialog.setCancelable(false);
    if (customDialog != null)
        customDialog.show();
    JSONObject object = new JSONObject();
    try {
        object.put("device_type", "android");
        object.put("device_id", device_UDID);
        object.put("device_token", device_token);
        object.put("login_by", "manual");
        object.put("first_name", first_name.getText().toString());
        object.put("last_name", last_name.getText().toString());
        object.put("email", email.getText().toString());
        object.put("password", password.getText().toString());
        object.put("password_confirmation", password.getText().toString());
        object.put("mobile", SharedHelper.getKey(RegisterActivity.this, "mobile"));

    } catch (JSONException e) {
        e.printStackTrace();
    }

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URLHelper.register, object, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            if (customDialog != null && customDialog.isShowing())
                customDialog.dismiss();
            utils.print("SignInResponse", response.toString());

            SharedHelper.putKey(RegisterActivity.this, "email", email.getText().toString());
            SharedHelper.putKey(RegisterActivity.this, "password", password.getText().toString());
            signIn();
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            if (customDialog != null && customDialog.isShowing())
                customDialog.dismiss();
            String json = null;
            String Message;
            NetworkResponse response = error.networkResponse;
            if (response != null && response.data != null) {
                Log.e("Error SignIN","::"+response.data.toString());
                Log.e("Error SignIN","::"+response.toString());
                utils.print("MyTestError1", "" + response.statusCode);
                try {
                    JSONObject errorObj = new JSONObject(new String(response.data));
                    utils.print("ErrorInRegisterAPI", "" + errorObj.toString());

                    if (response.statusCode == 400 || response.statusCode == 405 || response.statusCode == 500) {
                        try {
                            displayMessage(errorObj.optString("error"));
                        } catch (Exception e) {
                            displayMessage(getString(R.string.something_went_wrong));
                        }
                    } else if (response.statusCode == 401) {
                        try {
                            if (errorObj.optString("message").equalsIgnoreCase("invalid_token")) {
                                //Call Refresh token
                            } else {
                                displayMessage(errorObj.optString("message"));
                            }
                        } catch (Exception e) {
                            displayMessage(getString(R.string.something_went_wrong));
                        }

                    } else if (response.statusCode == 422) {
                        json = trimMessage(new String(response.data));
                        if (json != "" && json != null) {
                            if (json.startsWith("The email has already been taken")) {
                                displayMessage(getString(R.string.email_exist));
                            }else{
                                displayMessage(getString(R.string.something_went_wrong));
                            }
                            //displayMessage(json);
                        } else {
                            displayMessage(getString(R.string.please_try_again));
                        }

                    } else {
                        displayMessage(getString(R.string.please_try_again));
                    }

                } catch (Exception e) {
                    displayMessage(getString(R.string.something_went_wrong));
                }
            } else {
                if (error instanceof NoConnectionError) {
                    displayMessage(getString(R.string.oops_connect_your_internet));
                } else if (error instanceof NetworkError) {
                    displayMessage(getString(R.string.oops_connect_your_internet));
                } else if (error instanceof TimeoutError) {
                    registerAPI();
                }
            }
        }
    }) {

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("X-Requested-With", "XMLHttpRequest");
            return headers;
        }
    };
    AayoCabApplication.getInstance().addToRequestQueue(jsonObjectRequest);
}

person Nbn    schedule 20.08.2019    source источник
comment
Какова фактическая ошибка в вашем приложении? консоль, экран и т.д.   -  person pmiranda    schedule 20.08.2019
comment
Я отредактировал вопрос с ответом в приложении для Android. @pmiranda   -  person Nbn    schedule 21.08.2019


Ответы (3)


Это была проблема с конечной точкой API. Проблема решилась заменой api/provider/register на api/provider/sth. Это произошло из-за использования предопределенной переменной в laravel.

person Nbn    schedule 20.10.2019

Проверьте это решение при использовании залпа

Эта ошибка 409 конфликта является ошибкой на стороне клиента, вызванной использованием предопределенной переменной и возникающей в некоторых сетях. Решение заключается в переименовании php-файла URL-адреса, например, register.php в registerAccount.php в вашем appconfig.

Надеюсь, это поможет вам

person Daniel Nyamasyo    schedule 23.03.2020
comment
Это решило мою проблему - person Jeswills; 10.01.2021

409 Конфликт

Указывает, что запрос не может быть обработан из-за конфликта в текущем состоянии целевого ресурса.

Несколько гипотетических примеров:

  1. Пользователь хочет добавить файл в папку, но папки еще не существует.
  2. Amazon S3 использует его, когда вы пытаетесь удалить корзину, которая не пуста.
  3. Вы создаете новую запись в блоге, но она относится к категории, которая была удалена.
  4. Загрузка файла, который старше того, что уже есть на сервере.

Подробнее https://httpstatuses.com/409

person Jakir Hossain    schedule 30.09.2019