互联网的不断发展,网购如今已经成为了人们生活的一个庞大消费方式。足不出户的消费体验,让越来越来多的人爱上网购。网购势力的庞大,随之带动的是物流行业的发展壮大。市场上的物流公司纷纷应势而生。因此对于快递查询对接接口的需求量也越来越大。
下面快递鸟将给大家简单介绍以韵达快递单号查询接口对接方法,希望对大家有用。
韵达快递是一家具有中国特色的物流及快递品牌,结合中国国情,用科技化和标准化的模式运营网络,已在全国拥有三千余个服务规范的服务站点,致力于不断向客户提供富有创新和满足客户不同需求的解决方案。韵达快递的查询编码:YD,其他中通、圆通、顺丰、百世、邮政、EMS、极兔等国内外600多家主流快递物流api接口都可以用快递鸟进行对接
1.完成前期准备工作
1.1,去快递鸟官网一个账号
1.2,免费获得一个apiKey(接口权限验证需要),
1.3,完成实名认证流程,
1.4,订购一个免费套餐,
2.API接口
2.1,测试调用地址:
2.2,正式调用地址:
2.3,请求方式:POST
2.4,编码格式(utf-8):application/x-www-form-urlencoded;charset=utf-8
2.5,返回类型:JSON
2.6,调试页面:
2.7,调试工具:(使用快递鸟账号登录)
接口规则
(1)、查询接口支持按照运单号查询(单个查询,并发不超过10个/S)。
(2)、指定的物流运单号选择相应的快递公司编码,格式不对或则编码错误都会返失败的信息。如韵达快递物流单号应选择快递公司编码(YD)
(3)、返回的物流跟踪信息按照发生的时间升序排列。
(4)、接口指令1002。
(5)、请求地址:快递鸟
(6)、接口提供:快递鸟
系统级和应用级输入参数
中通快递物流单号查询API接口免费对接案例
返回结果参数
中通快递物流单号查询API接口免费对接案例
JAVAdemo:(其他demo都可以在官网上下载)
-
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.UnsupportedEncodingException;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.util.HashMap;importjava.util.Map;importjava.security.MessageDigest;/**
-
*
-
* 快递鸟订阅推送2.0接口
-
*
-
* @技术QQ: 4009633321
-
* @技术QQ群: 200121393
-
* @see:
-
* @copyright: 深圳市快金数据技术服务有限公司
-
*
-
* ID和Key请到官网申请:
-
*/publicclassKdniaoSubscribeAPI{//DEMOpublic static void main(String[] args) { KdniaoSubscribeAPI api = new KdniaoSubscribeAPI(); try { String result = api.orderTracesSubByJson();
-
System.out.print(result);
-
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
}//电商IDprivate String EBusinessID="请到快递鸟官网申请"; //电商加密私钥,快递鸟提供,注意保管,不要泄漏private String AppKey="请到快递鸟官网申请"; //测试请求urlprivate String ReqURL = ""; //正式请求url//private String ReqURL = ""; /**
-
*Json方式 物流信息订阅
-
*@throwsException
-
*/publicStringorderTracesSubByJson()throwsException{StringrequestData="{'OrderCode': 'SF201608081055208281',"+"'ShipperCode':'SF',"+"'LogisticCode':'3100707578976',"+"'PayType':1,"+"'ExpType':1,"+"'CustomerName':'',"+"'CustomerPwd':'',"+"'MonthCode':'',"+"'IsNotice':0,"+"'Cost':1.0,"+"'OtherCost':1.0,"+"'Sender':"+"{"+"'Company':'LV','Name':'Taylor','Mobile':'15018442396','ProvinceName':'上海','CityName':'上海','ExpAreaName':'青浦区','Address':'明珠路73号'},"+"'Receiver':"+"{"+"'Company':'GCCUI','Name':'Yann','Mobile':'15018442396','ProvinceName':'北京','CityName':'北京','ExpAreaName':'朝阳区','Address':'三里屯街道雅秀大厦'},"+"'Commodity':"+"[{"+"'GoodsName':'鞋子','Goodsquantity':1,'GoodsWeight':1.0}],"+"'Weight':1.0,"+"'Quantity':1,"+"'Volume':0.0,"+"'Remark':'小心轻放'}";Map<String,String>params=newHashMap<String,String>();
-
params.put("RequestData",urlEncoder(requestData,"UTF-8"));
-
params.put("EBusinessID",EBusinessID);
-
params.put("RequestType","1008");StringdataSign=encrypt(requestData,AppKey,"UTF-8");
-
params.put("DataSign",urlEncoder(dataSign,"UTF-8"));
-
params.put("DataType","2");Stringresult=sendPost(ReqURL,params);//根据公司业务处理返回的信息...... return result;
-
}/**
-
* MD5加密
-
* @param str 内容
-
* @param charset 编码方式
-
* @throws Exception
-
*/@SuppressWarnings("unused")
-
privateStringMD5(Stringstr,Stringcharset)throwsException{
-
MessageDigest md=MessageDigest.getInstance("MD5");
-
md.update(str.getBytes(charset));
-
byte[]result=md.digest();
-
StringBuffer sb=newStringBuffer(32);for(inti=0;i<result.length;i++){
-
intval=result[i]&0xff;if(val<=0xf){
-
sb.append("0");
-
}
-
sb.append(Integer.toHexString(val));
-
}returnsb.toString().toLowerCase();
-
}/**
-
* base64编码
-
* @param str 内容
-
* @param charset 编码方式
-
* @throws UnsupportedEncodingException
-
*/privateStringbase64(Stringstr,Stringcharset)throwsUnsupportedEncodingException{Stringencoded=base64Encode(str.getBytes(charset));returnencoded;
-
}
-
-
@SuppressWarnings("unused")
-
privateStringurlEncoder(Stringstr,Stringcharset)throwsUnsupportedEncodingException{Stringresult=URLEncoder.encode(str,charset);returnresult;
-
}/**
-
* 电商Sign签名生成
-
* @param content 内容
-
* @param keyValue Appkey
-
* @param charset 编码方式
-
* @throws UnsupportedEncodingException ,Exception
-
* @return DataSign签名
-
*/@SuppressWarnings("unused")
-
privateStringencrypt(Stringcontent,StringkeyValue,Stringcharset)throwsUnsupportedEncodingException,Exception
-
{if(keyValue!=null)
-
{returnbase64(MD5(content+keyValue,charset),charset);
-
}returnbase64(MD5(content,charset),charset);
-
}/**
-
* 向指定 URL 发送POST方法的请求
-
* @param url 发送请求的 URL
-
* @param params 请求的参数集合
-
* @return 远程资源的响应结果
-
*/@SuppressWarnings("unused")
-
privateStringsendPost(Stringurl,Map<String,String>params){
-
OutputStreamWriter out=null;
-
BufferedReaderin=null;
-
StringBuilder result=newStringBuilder();try{
-
URLrealUrl=newURL(url);
-
HttpURLConnection conn=(HttpURLConnection)realUrl.openConnection();// 发送POST请求必须设置如下两行 conn.setDoOutput(true);
-
conn.setDoInput(true);// POST方法 conn.setRequestMethod("POST"); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*");
-
conn.setRequestProperty("connection","Keep-Alive");
-
conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
-
conn.connect();// 获取URLConnection对象对应的输出流 out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); // 发送请求参数 if (params != null) { StringBuilder param = new StringBuilder(); for (Map.Entry entry : params.entrySet()) { if(param.length()>0){
-
param.append("&");
-
}
-
param.append(entry.getKey());
-
param.append("=");
-
param.append(entry.getValue());
-
System.out.println(entry.getKey()+":"+entry.getValue());
-
}
-
System.out.println("param:"+param.toString());
-
out.write(param.toString());
-
}// flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null) {
-
result.append(line);
-
}
-
}catch(Exceptione){
-
e.printStackTrace();
-
}//使用finally块来关闭输出流、输入流finally{ try{ if(out!=null){
-
out.close();
-
}if(in!=null){in.close();
-
}
-
}catch(IOException ex){
-
ex.printStackTrace();
-
}
-
}returnresult.toString();
-
}
-
-
privatestaticchar[]base64EncodeChars=newchar[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/'};
-
-
publicstaticStringbase64Encode(byte[]data){
-
StringBuffer sb=newStringBuffer();
-
intlen=data.length;
-
inti=0;
-
intb1,b2,b3;while(i<len){
-
b1=data[i++]&0xff;if(i==len)
-
{
-
sb.append(base64EncodeChars[b1>>>2]);
-
sb.append(base64EncodeChars[(b1&0x3)<<4]);
-
sb.append("==");break;
-
}
-
b2=data[i++]&0xff;if(i==len)
-
{
-
sb.append(base64EncodeChars[b1>>>2]);
-
sb.append(base64EncodeChars[((b1&0x03)<<4)|((b2&0xf0)>>>4)]);
-
sb.append(base64EncodeChars[(b2&0x0f)<<2]);
-
sb.append("=");break;
-
}
-
b3=data[i++]&0xff;
-
sb.append(base64EncodeChars[b1>>>2]);
-
sb.append(base64EncodeChars[((b1&0x03)<<4)|((b2&0xf0)>>>4)]);
-
sb.append(base64EncodeChars[((b2&0x0f)<<2)|((b3&0xc0)>>>6)]);
-
sb.append(base64EncodeChars[b3&0x3f]);
-
}returnsb.toString();
-
}
-
}
阅读(224) | 评论(0) | 转发(0) |