如何将数组传递给POST API?

时间:2018-12-10 13:51:52

标签: java android post

在我的Android应用程序中,我需要将一个数组作为正文(有效载荷信息)发送到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 :(得分:0)

我使用JSONArray解决了我的问题,并传递了数组。

if(getIntent().hasExtra("bank_name")) {
            bank_name =  getIntent().getStringExtra("bank_name");
        }else{
            bank_name = "?";
        }
        if(getIntent().hasExtra("type_name")) {
            type_name =  getIntent().getStringExtra("type_name");
        }else{
            type_name = "?";
        }
        if(getIntent().hasExtra("from_date")) {
            from_date =  getIntent().getStringExtra("from_date");
        }else{
            from_date = "?";
        }
        if(getIntent().hasExtra("to_date")) {
            to_date =  getIntent().getStringExtra("to_date");
        }else{
            to_date = "?";
        }

现在我得到如下数组: destNumbers = [“ 3434343”,“ 3434334]

答案 1 :(得分:0)

更新您的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请求错误,则请使用json确认并验证请求有效负载。