Ошибка залпа: ParseError для пустого объекта requestObject в методе POST - PullRequest
1 голос
/ 08 июля 2019

У меня есть динамический URL-адрес API для метода POST, в котором параметр является некоторым ограничением, которое нужно присоединить в URL, а объект запроса, который нужно отправить, пуст, т. Е. {}.Ответ приходит нормально при использовании клиента rest, поскольку я получаю полные требуемые данные, как и ожидалось, но когда дело доходит до выполнения этого вызова POST-запроса от Android, выдается ошибка: com.android.volley.ParseError: java.lang.NullPointerException.

 MyJsonObjectRequest jsonObjReq = new MyJsonObjectRequest(
                false,
                getActivity(),
                Request.Method.POST,
                url,
                requestObject,

                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        if (response == null) {
                            return;
                        }

                        Utils.DEBUG(TAG, "RequestBody : " + new Gson().toJson(requestObject));
                        Utils.DEBUG(TAG, "onResponse() called : " + new Gson().toJson(response));
                        String responseString = new Gson().toJson(response);
                        fPOMobileReviewPassData = ParseManager.getInstance().fromJSON(response, FPOMobileReviewPassData.class);
                        airlineId = fPOMobileReviewPassData.getAirlineId();
                        updateUI();

                        if (flagAddUserAPI) {
                            callAddUserApi(loginData);
                        }
                        Utils.hideProgressDialog();

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Utils.showVolleyError(error, getActivity());
                Utils.hideProgressDialog();
            }
        }
        );


        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

1 Ответ

0 голосов
/ 08 июля 2019

Ваша проблема довольно проста: сервер возвращает JSONArray только с одним элементом внутри.A JSONArray не является JSONObject.Вот почему анализ не удается.или наоборот.

Примечание: сначала убедитесь, что ваш ответ JSONArray JSONObject или sting

 RequestQueue queue = Volley.newRequestQueue(this);

    final String url = "Your_url";

    // prepare the Request
    JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.POST, url, null,
            new Response.Listener<JSONArray>()
            {
                @Override
                public void onResponse(JSONArray response) {
                    // display response
                    Log.d("Response", response.toString());
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("Error.Response", error.toString());
                }
            }
    );



    // add it to the RequestQueue
    queue.add(getRequest);
...