HttpURLConnection post提交数组的3种方式

java之HttpURLConnection 2020-01-13 阅读 314 评论 0

使用Java 的 HttpURLconnection 类, POST 的请求方式,提交数组给服务器。下面介绍了3种实现方式。

text/plain方式

将数组的json格式存放在http请求的body,使用这一方式比较简单方便,对于复杂的数据结构同样适用。服务器接收的是一串文本,需要对文本进行 json 编码才能获得数组对象。

参考 httpurlconnection post提交raw格式数据

try {
    HttpPostRaw postRaw = new HttpPostRaw("http://localhost/test.php", "utf-8");
    String arr = "{\"arr\": [1, 2]}";
    postRaw.setPostData(arr);
    postRaw.addHeader("Content-Type", "application/json");
    String out = postRaw.finish();
    System.out.println(out);
} catch (Exception e) {
    e.printStackTrace();
}

multipart/form-data

参考 HttpURLConnection实现multipart/form-data类型的提交

try {
    // 请求头
    Map<String, String> headers = new HashMap<>();
    headers.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36");
    HttpPostMultipart multipart = new HttpPostMultipart("http://localhost/test.php", "utf-8", headers);
    multipart.addFormField("arr[0]", "1");
    multipart.addFormField("arr[1]", "2");
    String out = multipart.finish();
    System.out.println(out);
} catch (Exception e) {
    e.printStackTrace();
}

使用这种方式,有点类似 javascript 数组的定义。

var arr = [];
arr[0] = 1;
arr[1] = 2;
console.log(arr);

application/x-www-form-urlencoded

参考 HttpURLConnection实现multipart/form-data类型的提交

请求一个二维数组到服务端。

try {
    HttpPostForm form = new HttpPostForm("http://localhost/test.php", "utf-8");
    form.addFormField("arr[0][0]", "00");
    form.addFormField("arr[0][1]", "01");
    form.addFormField("arr[1][0]", "10");
    form.addFormField("arr[1][1]", "11");
    String out = form.finish();
    System.out.println(out);
} catch (Exception e) {
    e.printStackTrace();
}
最后更新 2020-01-13