简单举例利用HTTP调用其他接口
之前在工作中都是使用SpringCloud,利用Feign直接调用其他接口,这次记录一下通过http调用其他接口,这是一个补单的接口,我只需要给接口传一个订单号就好,但是需要通过公钥加密一下签名。(Feign调用就没有这么麻烦)
1.首先构建请求参数
构建请求参数
SupplyOrderReq supplyOrderReq = new SupplyOrderReq(orderNo);
Map<String, Object> param = BeanUtil.beanToMap(supplyOrderReq);
SupplyorderReq对象
public class SupplyOrderReq {
/**
* 订单号
*/
private String orderNo;
/**
* 签名
*/
private String sign;
public SupplyOrderReq(String orderNo) {
this.orderNo = orderNo;
this.sign = SignUtil.generateSign(this);
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
}
加密规则
public class SignUtil {
/**
* 根据传入的对象生成签名(默认按照字母排序)
*
* @param object
*/
public static String generateSign(Object object) {
Map<String, Object> signMap = BeanUtil.beanToMap(object, false, true);
TreeMap<String, Object> signTreeMap = MapUtil.sort(signMap);
StringBuilder result = new StringBuilder();
for (Map.Entry<String, Object> entry : signTreeMap.entrySet()) {
result.append(entry.getValue());
}
return SecureUtil.md5(result.toString() + "这里就是接口提供的公钥");
}
}
2.请求接口
这里使用的是hutool的HttpUtil,url就是你调用的接口url
String resp = HttpUtil.get(url, param);
3.解析接口返回数据
SupplyOrderResp supplyOrderResp = JSONObject.parseObject(resp, SupplyOrderResp.class);
SupplyOrderResp对象
public class SupplyOrderResp {
private int code;
private String errMsg;
private Object data;
}
4.返回请求结果
return supplyOrderResp;
这个只是一个大致的流程,在正式的调用中还需要判断,第一判断但会对象是否为空,第二判断返回对象的code值是否是成功的code,如果失败,失败信息会在msg里面