Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5746
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2017-06-24 10:47
文章分类
文章存档

2021年(2)

2019年(2)

我的朋友

分类: C#/.net

2021-05-23 22:11:34

互联网的不断发展,网购如今已经成为了人们生活的一个庞大消费方式。足不出户的消费体验,让越来越来多的人爱上网购。网购势力的庞大,随之带动的是物流行业的发展壮大。市场上的物流公司纷纷应势而生。因此对于快递查询对接接口的需求量也越来越大。
下面快递鸟将给大家简单介绍以韵达快递单号查询接口对接方法,希望对大家有用。
韵达快递是一家具有中国特色的物流及快递品牌,结合中国国情,用科技化和标准化的模式运营网络,已在全国拥有三千余个服务规范的服务站点,致力于不断向客户提供富有创新和满足客户不同需求的解决方案。韵达快递的查询编码: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都可以在官网上下载)

点击(此处)折叠或打开

  1. 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. *
  3. * 快递鸟订阅推送2.0接口
  4. *
  5. * @技术QQ: 4009633321
  6. * @技术QQ群: 200121393
  7. * @see:
  8. * @copyright: 深圳市快金数据技术服务有限公司
  9. *
  10. * ID和Key请到官网申请:
  11. */publicclassKdniaoSubscribeAPI{//DEMOpublic static void main(String[] args) { KdniaoSubscribeAPI api = new KdniaoSubscribeAPI(); try { String result = api.orderTracesSubByJson();
  12.             System.out.print(result);
  13.             
  14.         }catch(Exceptione){
  15.             e.printStackTrace();
  16.         }
  17.     }//电商IDprivate String EBusinessID="请到快递鸟官网申请"; //电商加密私钥,快递鸟提供,注意保管,不要泄漏private String AppKey="请到快递鸟官网申请"; //测试请求urlprivate String ReqURL = ""; //正式请求url//private String ReqURL = ""; /**
  18.      *Json方式 物流信息订阅
  19.      *@throwsException
  20.      */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>();
  21.         params.put("RequestData",urlEncoder(requestData,"UTF-8"));
  22.         params.put("EBusinessID",EBusinessID);
  23.         params.put("RequestType","1008");StringdataSign=encrypt(requestData,AppKey,"UTF-8");
  24.         params.put("DataSign",urlEncoder(dataSign,"UTF-8"));
  25.         params.put("DataType","2");Stringresult=sendPost(ReqURL,params);//根据公司业务处理返回的信息...... return result;
  26.     }/**
  27.      * MD5加密
  28.      * @param str 内容
  29.      * @param charset 编码方式
  30.      * @throws Exception
  31.      */@SuppressWarnings("unused")
  32.     privateStringMD5(Stringstr,Stringcharset)throwsException{
  33.         MessageDigest md=MessageDigest.getInstance("MD5");
  34.         md.update(str.getBytes(charset));
  35.         byte[]result=md.digest();
  36.         StringBuffer sb=newStringBuffer(32);for(inti=0;i<result.length;i++){
  37.             intval=result[i]&0xff;if(val<=0xf){
  38.                 sb.append("0");
  39.             }
  40.             sb.append(Integer.toHexString(val));
  41.         }returnsb.toString().toLowerCase();
  42.     }/**
  43.      * base64编码
  44.      * @param str 内容
  45.      * @param charset 编码方式
  46.      * @throws UnsupportedEncodingException
  47.      */privateStringbase64(Stringstr,Stringcharset)throwsUnsupportedEncodingException{Stringencoded=base64Encode(str.getBytes(charset));returnencoded;
  48.     }
  49.     
  50.     @SuppressWarnings("unused")
  51.     privateStringurlEncoder(Stringstr,Stringcharset)throwsUnsupportedEncodingException{Stringresult=URLEncoder.encode(str,charset);returnresult;
  52.     }/**
  53.      * 电商Sign签名生成
  54.      * @param content 内容
  55.      * @param keyValue Appkey
  56.      * @param charset 编码方式
  57.      * @throws UnsupportedEncodingException ,Exception
  58.      * @return DataSign签名
  59.      */@SuppressWarnings("unused")
  60.     privateStringencrypt(Stringcontent,StringkeyValue,Stringcharset)throwsUnsupportedEncodingException,Exception
  61.     {if(keyValue!=null)
  62.         {returnbase64(MD5(content+keyValue,charset),charset);
  63.         }returnbase64(MD5(content,charset),charset);
  64.     }/**
  65.      * 向指定 URL 发送POST方法的请求
  66.      * @param url 发送请求的 URL
  67.      * @param params 请求的参数集合
  68.      * @return 远程资源的响应结果
  69.      */@SuppressWarnings("unused")
  70.     privateStringsendPost(Stringurl,Map<String,String>params){
  71.         OutputStreamWriter out=null;
  72.         BufferedReaderin=null;
  73.         StringBuilder result=newStringBuilder();try{
  74.             URLrealUrl=newURL(url);
  75.             HttpURLConnection conn=(HttpURLConnection)realUrl.openConnection();// 发送POST请求必须设置如下两行 conn.setDoOutput(true);
  76.             conn.setDoInput(true);// POST方法 conn.setRequestMethod("POST"); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*");
  77.             conn.setRequestProperty("connection","Keep-Alive");
  78.             conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  79.             conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  80.             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){
  81.                           param.append("&");
  82.                       }
  83.                       param.append(entry.getKey());
  84.                       param.append("=");
  85.                       param.append(entry.getValue());
  86.                       System.out.println(entry.getKey()+":"+entry.getValue());
  87.                   }
  88.                   System.out.println("param:"+param.toString());
  89.                   out.write(param.toString());
  90.             }// flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader( new InputStreamReader(conn.getInputStream(), "UTF-8")); String line; while ((line = in.readLine()) != null) {
  91.                 result.append(line);
  92.             }
  93.         }catch(Exceptione){
  94.             e.printStackTrace();
  95.         }//使用finally块来关闭输出流、输入流finally{ try{ if(out!=null){
  96.                     out.close();
  97.                 }if(in!=null){in.close();
  98.                 }
  99.             }catch(IOException ex){
  100.                 ex.printStackTrace();
  101.             }
  102.         }returnresult.toString();
  103.     }
  104.     
  105.     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','+','/'};
  106.         
  107.     publicstaticStringbase64Encode(byte[]data){
  108.         StringBuffer sb=newStringBuffer();
  109.         intlen=data.length;
  110.         inti=0;
  111.         intb1,b2,b3;while(i<len){
  112.             b1=data[i++]&0xff;if(i==len)
  113.             {
  114.                 sb.append(base64EncodeChars[b1>>>2]);
  115.                 sb.append(base64EncodeChars[(b1&0x3)<<4]);
  116.                 sb.append("==");break;
  117.             }
  118.             b2=data[i++]&0xff;if(i==len)
  119.             {
  120.                 sb.append(base64EncodeChars[b1>>>2]);
  121.                 sb.append(base64EncodeChars[((b1&0x03)<<4)|((b2&0xf0)>>>4)]);
  122.                 sb.append(base64EncodeChars[(b2&0x0f)<<2]);
  123.                 sb.append("=");break;
  124.             }
  125.             b3=data[i++]&0xff;
  126.             sb.append(base64EncodeChars[b1>>>2]);
  127.             sb.append(base64EncodeChars[((b1&0x03)<<4)|((b2&0xf0)>>>4)]);
  128.             sb.append(base64EncodeChars[((b2&0x0f)<<2)|((b3&0xc0)>>>6)]);
  129.             sb.append(base64EncodeChars[b3&0x3f]);
  130.         }returnsb.toString();
  131.     }
  132. }


阅读(224) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~