JAVA-HttpUtil 工具类
Http如何使用 application/x-www-form-urlencoded 传输List集合
需求说明:
遇到一个API接口文档,必须要求 所有接口按 “application/x-www-form-urlencoded” 方式传输,接口文档又存在 List集合 数组等等; “application/json;charset=UTF-8” 常见的很,这就不描述了;
PostMan 请求示例
如果会使用postman的小伙伴,可以试试调试,如下图
接口文档,中的 order_detail 就是一个List对象; 相信有一定代码功底的人,是可以看懂的,这就不描述了;
JAVA 请求示例,代码HttpUtil
Map<String, String> header = new HashMap<>();
//状态
header.put("Content-Type", "application/x-www-form-urlencoded");
//授权
header.put("Authorization", "Basic " + thirdPartyStore.getAuthorizationContent());
//body内容
Map<String, Object> body = new HashMap<>();
//订单ID
body.put("order_id", orderId);
//物流公司名称
body.put("order_detail[0].ship_type_name", thirdPartyExpressCompany.getName());
//运单号
body.put("order_detail[0].waybill_no", expressCompanyNumber);
//商品详情
for (int i = 0; i < thirdPartyStoreOrderDetails.size(); i++) {
//key
String key = "order_detail[0].product_detail[" + i + "].";
//商品详情
ThirdPartyStoreOrderDetail thirdPartyStoreOrderDetail = thirdPartyStoreOrderDetails.get(i);
body.put(key + "product_id", thirdPartyStoreOrderDetail.getBarCode());
body.put(key + "product_name", thirdPartyStoreOrderDetail.getName());
body.put(key + "quantity", thirdPartyStoreOrderDetail.getCount());
}
System.out.println(JSONObject.toJSONString(body));
//访问
String rsp = HttpRequest.post(BenlaiUtil.routerUrl + "/xx").addHeaders(header).form(body).execute().body();
if (rsp == null) {
return ThirdPartyLogisticsReturn.error(thirdPartyStore.getName() + "访问异常");
}
部分参数,是项目中的,不要全额代入进去,这里只提供一个示例;一个理解方式,如何传输;
HttpRequest.post 这个工具类,使用的是 【cn.hutool】工具类,如果要使用的小伙伴,maven导入下面的 jar; 最新版的请访问 官方文档提供地址 http://hutool.cn/docs/#/
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>