Как передать массив в POST API? - PullRequest
0 голосов
/ 10 декабря 2018

В моем приложении для Android мне нужно отправить массив в виде тела (информация о полезной нагрузке) на URL-адрес POST.

В теле есть два параметра:

1. "env" : "dev"  
2. "dNumber" : tn("+1232323"); // here I need to send an array.

Отредактированный вопрос: Мне нужно отправить телефон в виде массива, как ["123131", "4545545"]

Я передаю массив как созданный массив JSON и преобразовать в строку и передать.

private String tn(String tn) {
    String json = "";
    try {
        JSONArray jsonArray = new JSONArray();
        jsonArray.put(0, tn);
        json = jsonArray.toString();
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return json;
}

и полный код:

    try {
        URL url;
        HttpURLConnection urlConnection;
        url = new URL(makeCallUrl);
        urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("POST");
        urlConnection.setRequestProperty("Content-Type", "application/json");
        urlConnection.setRequestProperty("Authorization", String.format("%s %s", "Basic", secretKey));
        urlConnection.setUseCaches(false);
        urlConnection.setDoOutput(true);
        urlConnection.connect();
        // Setup the body of the url
        JSONObject json = new JSONObject();

        json.put("env", "dev");
        json.put("destNumbers", tn("+123123"));

        // Write the body on the wire
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(urlConnection.getOutputStream()));
        writer.write(json.toString());
        writer.flush();
        writer.close();

    } catch (IOException e) {
        Log.d(TAG, "IOException:" + e.getMessage());
        e.printStackTrace();
    }

Если я попробую это, я получу 400, исключение Плохой запрос.Пожалуйста, помогите мне передать массив в POST API

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Обновите ваш метод tn ().Вместо возврата String он должен возвращать JSONArray.

private JSONArray tn(String tn) {
JSONArray jsonArray = new JSONArray();
   try {
       jsonArray.put(0, tn);
   } catch (JSONException e) {
       e.printStackTrace();
   }
   return jsonArray ;
}

Несмотря на то, что ошибка 400 Bad request все же возникает, подтвердите и проверьте полезную нагрузку запроса с помощью json.

0 голосов
/ 11 декабря 2018

Я решил свою проблему с помощью JSONArray и передал массив.

        // creating json array
        JSONArray numberArray = new JSONArray();
        numberArray.put(0, tn);

        // send the array with payload
        JSONObject json = new JSONObject();
        json.put("env", "DEV");
        json.put("destNumbers", numberArray);

Теперь я получаю массив следующим образом: destNumbers = ["3434343", "3434334]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...