Android Json Запись показывает JSONExepection (конец ввода в символе 0 из) - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь опубликовать некоторые JSON значения в моей таблице mysql, но я получаю JSONException (Конец ввода в символе 0 of). Я попытался с почтальоном, и он работает нормально, но я получаю сообщение об ошибке, когда я пытаюсь запустить его на моем устройстве andriod, вот мой java код

            String url = "//MY url goes here//";
            StringRequest stringRequest = new StringRequest(Request.Method.POST, url, response -> {
            try {
                    JSONObject jsonObject = new JSONObject(response);
                   String success = jsonObject.getString("message");
                    Toast.makeText(getAplicationContext, request_type + " " +success, Toast.LENGTH_SHORT).show();
                    progressBar1.setVisibility(View.INVISIBLE);
                     if (success.equals("Request sent Successfully")) {
                        Toast.makeText(getAplicationContext.this, request_type +" Request Sent Successfully", Toast.LENGTH_SHORT).show();
                        progressBar1.setVisibility(View.INVISIBLE);
                    } else {
                        Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show();
                    }

                } catch (JSONException e) {
                    Toast.makeText(getApplicationContext(), "Exception " + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }, error -> Toast.makeText(getApplicationContext(), "Error :: " + error.getMessage(), Toast.LENGTH_SHORT).show()) {
                @Override
                protected Map<String, String> getParams() {
                    Map<String, String> params = new HashMap<>();
                    params.put("status", status);
                    params.put("type", type);
                    params.put("req", request);
                    return params;
                }
            };

            RequestQueue requestQueue = Volley.newRequestQueue(this);

            requestQueue.add(stringRequest);

Я могу успешно опубликовать данные для него используется почтальон, но он выдает ошибку JsonException в android, поэтому я полагаю, что это должно быть из моего кода выше. Любая помощь или совет будут высоко оценены Спасибо

1 Ответ

0 голосов
/ 27 апреля 2020

Я бы посоветовал вам взглянуть на ответ почтальона API и утверждать, что он возвращает правильный json ожидаемый объект. Например, ключ 'message' может быть объектом, а не строкой, т.е. jsonObject.getJSONObject ("message"). Кроме того, рассмотрите возможность использования библиотеки gson Google для анализа ответа с POJOs

, например

      if (callBack == null) {
                throw new IllegalArgumentException("Callback cannot be null!!!");
            }
            HashMap<String, String> params = new HashMap<>();
            params.put("status", status);
                    params.put("type", type);
                    params.put("req", request);

            RequestQueue requestQueue = Volley.newRequestQueue(_context);

            JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, URL, new JSONObject(params),
                    new com.android.volley.Response.Listener<JSONObject>() {

                        @Override
                        public void onResponse(JSONObject response) {
                                RespObj retObj = gson.fromJson(response.toString(), RespObj.class);
callBack.onResponse(retObj)  
                    }, new com.android.volley.Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {

            }) {

                @Override
                public String getBodyContentType() {
                    return "application/json; charset=utf-8";
                }

                @Override
                public Map<String, String> getHeaders() {
                    return headers;
                }
            };
            jsonObjReq.setRetryPolicy(policy);
            jsonObjReq.setTag(tag);
            requestQueue.add(jsonObjReq);
    /*pojo*/
public class RespObj{
 private String message;
public String getMessage(){
 return message;
}
/**add this to gradle*/
implementation 'com.google.code.gson:gson:2.8.5'
}
...