E/Volley: [2342] Сетевая доступность.Исключение shouldRetryException: Код неожиданного ответа 400

#java #android #android-volley

Вопрос:

Я использую библиотеку Android volley и пытаюсь отправить данные на сервер API, но он каждый раз реагирует на эту ошибку

 E/Volley: [2342] NetworkUtility.shouldRetryException: Unexpected response code 400 for API
 

Это мой код:

        JSONObject params = new JSONObject();
        try {
            params.put("deptcode", 649);
            params.put("endDt", "2021-07-22T12:37:28.755Z");
            params.put("instCode", 152);
            params.put("instSesNO", 0);
            params.put("locCode", 2);
            params.put("observedBy", obserName);
            params.put("sessionId", 0);
            params.put("startDt", "2021-07-22T12:37:28.755Z");
            params.put("status", "string");
        }
        catch (JSONException e) {
            e.printStackTrace();
        }

        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
                url, params,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.d("TAG", response.toString());
                    }
                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d("TAG", "Error: "   error.getMessage());
            }
        }) {

            /**
             * Passing some request headers
             * */
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();
                headers.put("Content-Type", "application/json; charset=utf-8");
                return headers;
            }

        };
        jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(300000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        MyRequestQueue.add(jsonObjReq);
 

Я перепробовал много способов, но все равно у меня ничего не получается. Пожалуйста, помогите мне.

Ответ №1:

обычно 400 — это ошибка сервера, которая не найдена на сервере.
1.попробуйте свой api на почтальоне и убедитесь, что он работает.

2 — иногда значения, которые мы передаем в int, могут быть разрешены путем преобразования их в строку.

3 — попробуйте получить сообщение об ошибке от error.getMessage() . если не решено, пожалуйста, поделитесь своим api, я проверю.

Комментарии:

1. Спасибо, я нашел ошибку. Я передавал неправильный формат значения.

2. Поздравляю @AbdullahAlShibli, пожалуйста, не забудьте проголосовать, если это вам помогло. С уважением!