当前位置: 首页 > 知识库问答 >
问题:

如何在android打开URL连接中将Json数组作为post参数发送

汤飞羽
2023-03-14

我必须以Json数组的格式发出有效负载的post请求。我使用开放的HTTP URL连接。我有使用url连接发送Json对象作为post参数的代码,但我不知道如何发送json数组。下面显示的是json对象的开放url post请求的代码。有人能帮我发送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个答案

斜向文
2023-03-14

此样本供您参考

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();

更多细节请查看这里,这里或这里

 类似资料:
  • 问题内容: 我需要在Web服务调用中将一些值从移动设备传递到服务器,因此我打算将JSON格式的所有值传递如下 以下是我的服务电话 我正在尝试通过这种方式致电上述服务 但是输出是这样的 谁能告诉我为什么我没有获得所有的价值观? 问题答案: 我建议将JSON数据作为请求传递给主体。但是,如果您仍然希望将其作为URL中的参数传递,则必须像下面这样对URL进行编码,例如: 对于前json是:-> 有关UR

  • 问题内容: 我想在url中发送json数据,如下所示。 我怎样才能做到这一点? 问题答案: URL编码您的详细信息参数:

  • 问题内容: 我可以将数组作为url参数传递的最佳方法是什么?我在想这是否可能: 还是这样: 香港专业教育学院阅读示例,但我发现它很混乱: 问题答案: 有一个非常简单的解决方案:。它把您的查询参数作为一个关联数组: 将返回 为您处理所有必需的转义(=> 和=> ),因此此字符串等于。

  • 如何将API中的JSON文件作为android中的参数发送? 就像 我必须在API中发送这个JSON。这里是演示。json是一个文件。

  • 我试图实现同样的事情:如何使用查询参数表示为JSON与Spring RestTemplate?,发送JSON字符串作为URL参数在. 公认的答案提到将JSON对象作为请求参数发送通常不是一个好主意,因为您可能会面临JSON中的花括号问题。这正是当我试图对API进行GET调用时发生的事情。由于这是来自另一个系统的API,我不能要求他们更改格式,必须调用GETendpoint,将JSON作为参数传递。

  • 问题内容: 我想 将 HashMap 转换为json数组,我的代码如下: 我已经尝试过了,但是没有用 。有什么办法吗? 问题答案: 试试这个, 通过复制给定映射中的所有名称/值映射来创建新的JSONObject。 参数copyFrom一个映射,其键的类型为String,其值为受支持的类型。 如果地图的任何键为null,则抛出NullPointerException。 基本用法: 从JSONObje