отправить запрос с передачей списка в теле, используя залп - PullRequest
0 голосов
/ 10 апреля 2019

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

это мой код

 RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
JSONObject jsonBody = new JSONObject();
List<Integer> ids=new ArrayList<>();
ids.add(11);
ids.add(12);
jsonBody.put("ids",ids);
final String mRequestBody = jsonBody.toString();

StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_ADD_SKILLS, new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {


        Log.i("LOG_RESPONSE", response);
    }
}, error -> Log.e("LOG_VOLLEY", error.toString())) {
    @Override
    public String getBodyContentType() {
        return "application/json";
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        try {
            return mRequestBody == null ? null : mRequestBody.getBytes("utf-8");
        } catch (UnsupportedEncodingException uee) {
            VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", mRequestBody, "utf-8");
            return null;
        }
    }

    @Override
    protected Response<String> parseNetworkResponse(NetworkResponse response) {
        String responseString = "";
        if (response != null) {

            responseString = String.valueOf(response.statusCode);

        }
        return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response));
    }
};

requestQueue.add(stringRequest);

1 Ответ

0 голосов
/ 11 апреля 2019

потому что вы передаете неправильный формат json для публикации API, как показано ниже.

{
  "ids": "[11, 12]"
}

но в почтальоне вы передаете jsonarray идентификаторы в объекте.

{ 
  "ids":[11,12]
}

поэтому внесите изменения в ваш код следующим образом

JSONObject jsonBody = new JSONObject();

JSONArray jArrIds=new JSONArray();
jArrIds.put(11);
jArrIds.put(12);
jsonBody.put("ids",jArrIds);
...