码迷,mamicode.com
首页 > Windows程序 > 详细

web前端如何用快递鸟开发查询快递api接口

时间:2020-10-19 22:52:26      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:shm   oid   request   url   case   live   except   instance   错误   

快递查询接口是指快递查询网对外开放的应用程序接口,开发人员能够通过调用该接口与快递查询网进行交互,并基于该接口开发自己的快递查询应用程序。
技术图片
技术文档请参考快递鸟官网api:免费查询快递接口_100%安全保障_物流即时查询API-快递鸟请添加链接描述

(一)接入流程:

1、登录快递鸟官网注册页面注册快递鸟账号

网址:快递单号查询接口_电子面单_APIKey授权申请-快递鸟账号注册

2、登录快递鸟用户管理后台

网址:用户登录_快递鸟API让物流接口对接更简单

接口说明

(1)、接口支持的消息接收方式为HTTP POST,请求方法的编码格式(utf-8):“application/x-www-form-urlencoded;charset=utf-8”。

(2)、指定的物流运单号选择相应的快递公司编码,格式不对或则编码错误都会返失败的信息。如EMS物流单号应选择快递公司编码(EMS)

(3)、 API测试地址:http://testapi.kdniao.cc:8081/api/dist

(4)、API正式地址:http://api.kdniao.cc/api/dist

(5)、定时推送新的物流信息

(6)、接口秘钥申请:快递鸟(http://www.kdniao.com/reg

JSON请求

{

    "ShipperCode":"SF",

    "OrderCode":"SF201608081055208281",

    "LogisticCode":"3100707578976",

    "PayType":"1",

    "ExpType":"1",

    "CustomerName":"",

    "CustomerPwd":"",

    "MonthCode":"",

    "IsNotice":"0",

    "Sender":{

        "Name":"1255760",

        "Tel":"",

        "Mobile":"13700000000",

        "ProvinceName":"广东省",

        "CityName":"深圳市",

        "ExpAreaName":"福田区",

        "Address":"测试地址"    },

    "Receiver":{

        "Name":"1255760",

        "Tel":"",

        "Mobile":"13800000000",

        "ProvinceName":"广东省",

        "CityName":"深圳市",

        "ExpAreaName":"龙华新区",

        "Address":"测试地址2"    },

    "Commodity":[

        {

            "GoodsName":"书本"        }

    ]}

java请求:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;import java.security.MessageDigest;

publicclass KdniaoSubscribeAPI {

    //DEMOpublicstaticvoid main(String[] args) {

        KdniaoSubscribeAPI api =new KdniaoSubscribeAPI();

        try {

            String result = api.orderTracesSubByJson();

            System.out.print(result);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    //电商IDprivateString EBusinessID="请到快递鸟官网申请";

    //电商加密私钥,注意保管,不要泄漏privateString AppKey="请申请";

    //测试请求urlprivateString ReqURL ="http://testapi.kdniao.cc:8081/api/dist";

    //正式请求url

    //private String ReqURL = "http://api.kdniao.cc/api/dist";/**

    * Json方式  物流信息订阅

    * @throws Exception

    */public String orderTracesSubByJson() throws Exception{

        String requestData="{‘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‘:‘小心轻放‘}";

        Mapparams=newHashMap();

        params.put("RequestData", urlEncoder(requestData,"UTF-8"));

        params.put("EBusinessID", EBusinessID);

        params.put("RequestType","1008");

        String dataSign=encrypt(requestData, AppKey,"UTF-8");

        params.put("DataSign", urlEncoder(dataSign,"UTF-8"));

        params.put("DataType","2");

        String result=sendPost(ReqURL,params);

        //根据公司业务处理返回的信息......return result;

    }

    /**

    * MD5加密

    * @param str 内容     

    * @param charset 编码方式

    * @throws Exception

    */    @SuppressWarnings("unused")

    private String MD5(String str, String charset) throws Exception {

        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));

        }

        return sb.toString().toLowerCase();

    }

    /**

    * base64编码

    * @param str 内容     

    * @param charset 编码方式

    * @throws UnsupportedEncodingException

    */private String base64(String str, String charset) throws UnsupportedEncodingException{

        String encoded = base64Encode(str.getBytes(charset));

        return encoded; 

    } 

    @SuppressWarnings("unused")

    private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{

        String result = URLEncoder.encode(str, charset);

        return result;

    }

    /**

    * 电商Sign签名生成

    * @param content 内容 

    * @param keyValue Appkey

    * @param charset 编码方式

    * @throws UnsupportedEncodingException ,Exception

    * @return DataSign签名

    */    @SuppressWarnings("unused")

    private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception    {

        if(keyValue !=null)

        {

            returnbase64(MD5(content + keyValue, charset), charset);

        }

        return base64(MD5(content, charset), charset);

    }

    /**

    * 向指定 URL 发送POST方法的请求   

    * @param url 发送请求的 URL 

    * @param params 请求的参数集合   

    * @return 远程资源的响应结果

    */    @SuppressWarnings("unused")

    privateString sendPost(String url, Mapparams) {

        OutputStreamWriter out=null;

        BufferedReader in=null;     

        StringBuilder result =new StringBuilder();

        try {

            URL realUrl =new URL(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=newOutputStreamWriter(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(

                    newInputStreamReader(conn.getInputStream(),"UTF-8"));

            String line;

            while((line =in.readLine()) !=null) {

                result.append(line);

            }

        } catch (Exception e) {         

            e.printStackTrace();

        }

        //使用finally块来关闭输出流、输入流        finally{try{

                if(out!=null){

                    out.close();

                }

                if(in!=null){

                    in.close();

                }

            }

            catch(IOException ex){

                ex.printStackTrace();

            }

        }

        return result.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‘,‘+‘,‘/‘ };

    publicstaticString base64Encode(byte[] data) {

        StringBuffer sb =new StringBuffer();

        intlen = data.length;

        inti =0;

        int b1, 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]);

        }

        return sb.toString();

    }}

web前端如何用快递鸟开发查询快递api接口

标签:shm   oid   request   url   case   live   except   instance   错误   

原文地址:https://blog.51cto.com/13914620/2542464

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!