概述
开发前需先申请接口API。话不多说,直接上代码,发送的参数可以参考申通开放平台的开发文档 申通开放平台- -快递轨迹查询 下面放一张摘自申通开放平台的对接图片。
public class UPostMethod extends PostMethod {
public UPostMethod(String url){
super(url);
}
@Override
public String getRequestCharSet(){
return "UTF-8";//设置发送参数的编码格式
}
}
//正式环境调用接口
private static final String url = "http://cloudinter-linkgatewayonline.sto.cn/gateway/link.do";
//测试环境调用接口
private static final String testUrl = "http://cloudinter-linkgatewaytest.sto.cn/gateway/link.do";
//deliveryCode 是物流单号
public static
String doPost( String deliveryCode ) throws Exception {
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
client.getHttpConnectionManager().getParams().setSoTimeout(3000);
PostMethod method = new UPostMethod(url);//UPostMethod继承PostMethod,见下所示
String result = "";
try {
//JSONObject jsonObject = new JSONObject();
JSONObject jsonObject1 = new JSONObject();
List<String> list = new ArrayList<>();
list.add(deliveryCode); //填写查询物流单号
//以下信息不需要动,测试环境和正式环境的参数值一样
jsonObject1.put("waybillNoList", list);
//jsonObject1.put("order", "asc");
//System.out.println(jsonObject1.toString());
String data_digest = calculateDigest(jsonObject1.toString(), "你的secretKey");
//System.out.println(data_digest);
method.addParameter("content",jsonObject1.toString());
method.addParameter("data_digest",data_digest);
method.addParameter("api_name", "你的api_name");
method.addParameter("from_appkey", "你的from_appkey");
method.addParameter("from_code", "你的from_code");
method.addParameter("to_appkey", "你的to_appkey");
method.addParameter("to_code", "你的to_code");
client.executeMethod(method);
byte[] response = method.getResponseBody();
result = new String(response,"UTF-8");//返回值解析时用的编码格式
//System.out.println(result);
} catch (Exception e) {
throw new RuntimeException("创建连接失败" + e);
}finally{
method.releaseConnection();
}
result = result.replace(deliveryCode, "deliveryCode");
return result;
}
/***
* 物流轨迹查询签名
* @param content
* @param secretKey
* @return
*/
public static String calculateDigest(String content, String secretKey) {
String text = content + secretKey;
byte[] md5 = DigestUtils.md5(text);
return Base64.encodeBase64String(md5);
}
最后
以上就是纯真蚂蚁为你收集整理的申通快递轨迹查询----java完整demo的全部内容,希望文章能够帮你解决申通快递轨迹查询----java完整demo所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复