Как отправить массив Json в качестве параметров сообщения в Android открыть URL-соединение - PullRequest
1 голос
/ 18 июня 2019

Я должен сделать почтовый запрос с полезной нагрузкой, как в формате массива Json.Я использую открытое соединение HTTP URL.У меня есть коды для отправки объекта Json в виде параметров post с использованием URL-соединения, но я не знаю, как отправить массив JSON.Ниже показан код запроса на размещение открытого URL-адреса для объекта json.Может ли кто-нибудь помочь мне отправить массив Json вместо объекта JSON?

 public String   sendPostRequest(String arg0, JSONObject postDataParams){

    try {

        URL url = new URL(arg0); // here is your URL path

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000 /* milliseconds */);
        conn.setConnectTimeout(15000 /* milliseconds */);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Accept", "application/json");
        conn.setRequestProperty("Authorization", "Bearer Key");
        conn.setRequestProperty("Content-Type", "application/json");

        conn.setDoInput(true);
        conn.setDoOutput(true);

        OutputStream os = conn.getOutputStream();

        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));
        writer.flush();
        writer.close();
        os.close();

        int responseCode=conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {

            BufferedReader in=new BufferedReader(new
                    InputStreamReader(
                    conn.getInputStream()));

            StringBuffer sb = new StringBuffer("");
            String line="";

            while((line = in.readLine()) != null) {

                sb.append(line);
                break;
            }

            in.close();
            return sb.toString();

        }
        else {
            return new String("false : "+responseCode);
        }
    }
    catch(Exception e){
        return new String("Exception: " + e.getMessage());
    }

}


// converting json object to encoded string

public String getPostDataString(JSONObject params) throws Exception {

    StringBuilder result = new StringBuilder();
    boolean first = true;

    Iterator<String> itr = params.keys();

    while(itr.hasNext()){

        String key= itr.next();
        Object value = params.get(key);

        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(key, "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(value.toString(), "UTF-8"));

    }
    return result.toString();
}

Вот формат, который я хочу опубликовать.

[
  {
     "name":"CHV",
     "serialNumber":"421",
     "mac":"00:0d:83:b1:c0:8e",

  },
  {
     "name":"CHV_0",
     "serialNumber":"431",
     "mac":"50:0d:83:b1:c0:8e",
     }
   ]

Как я могу изменить свой код для публикации массива json.

1 Ответ

2 голосов
/ 18 июня 2019

Этот образец для справки

String request = "your Url Here";

URL url = new URL(request); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection();   
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setInstanceFollowRedirects(false); 
connection.setRequestMethod("POST"); 
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Bearer Key");
conn.setRequestProperty("Content-Type", "application/json");

DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
wr.writeBytes(otherParametersUrServiceNeed);


JSONArray jsonArray=new JSONArray();
JSONObject jsonParam = new JSONObject();
jsonParam.put("ID", "25");
jsonParam.put("description", "Real");
jsonParam.put("enable", "true");
jsonArray.put(jsonParam);

wr.writeBytes(jsonArray.toString());

wr.flush();
wr.close();

Для более подробной проверки здесь , здесь или здесь

...