HttpURLConnection post提交数组的3种方式
使用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();
}