HttpURLConnection post提交数组的3种方式

java之HttpURLConnection 2020-01-13 阅读 286 评论 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
MIP.watch('startSearch', function (newVal, oldVal) { if(newVal) { var keyword = MIP.getData('keyword'); console.log(keyword); // 替换当前历史记录,新增 MIP.viewer.open('/s/' + keyword, {replace: true}); setTimeout(function () { MIP.setData({startSearch: false}) }, 1000); } }); MIP.watch('goHome', function (newVal, oldVal) { MIP.viewer.open('/', {replace: false}); });