Como usar o Express Bird para desenvolver e consultar a interface API Express no front-end da web

A interface de consulta expressa refere-se à interface do programa aplicativo aberta à rede de consulta expressa. Os desenvolvedores podem interagir com a rede de consulta expressa chamando essa interface e desenvolver seu próprio aplicativo de consulta expressa com base nesta interface.
Como usar o Express Bird para desenvolver e consultar a interface API Express no front-end da web
Para documentos técnicos, consulte a API do site oficial do Express Bird: Consulta gratuita interface expressa_100% security_Real-time logística consulta API-Express bird, adicione uma descrição do link

(1) Processo de acesso:

1. Faça login no site oficial da Express Bird para se registrar para a conta Express Bird

Site: Express Track Number Query Interface_Electronic Face Sheet_APIKey Authorization Application-Express Bird Account Registration

2. Faça login para expressar o histórico de gerenciamento de usuários de pássaros

Site: Login do usuário_Express Bird API torna o encaixe da interface de logística mais fácil

Descrição da Interface

(1) O método de recebimento de mensagens suportado pela interface é HTTP POST e o formato de codificação do método de solicitação (utf-8): "application / x-www-form-urlencoded; charset = utf-8".

(2) Selecione o código da empresa de courier correspondente para o número do conhecimento logístico designado. Se o formato ou o código estiverem incorretos, ele retornará uma mensagem de falha. Se o número do pedido de logística EMS deve escolher o código expresso da empresa (EMS)

(3) Endereço de teste de API: http://testapi.kdniao.cc:8081/api/dist

(4) Endereço oficial da API: http://api.kdniao.cc/api/dist

(5) Promova novas informações de logística regularmente

(6) Aplicativo para chave secreta de interface: Express Bird ( http://www.kdniao.com/reg )

Solicitação 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();

    }}

Acho que você gosta

Origin blog.51cto.com/13914620/2542464
Recomendado
Clasificación