[Java] 不限量免费快递查询接口调用方法 →→→→→进入此内容的聊天室

来自 , 2020-10-19, 写在 Java, 查看 157 次.
URL http://www.code666.cn/view/d9731321
  1. /*JSON请求
  2. 01
  3. {
  4. 02
  5.     "ShipperCode":"SF",
  6. 03
  7.     "OrderCode":"SF201608081055208281",
  8. 04
  9.     "LogisticCode":"3100707578976",
  10. 05
  11.     "PayType":"1",
  12. 06
  13.     "ExpType":"1",
  14. 07
  15.     "CustomerName":"",
  16. 08
  17.     "CustomerPwd":"",
  18. 09
  19.     "MonthCode":"",
  20. 10
  21.     "IsNotice":"0",
  22. 11
  23.     "Sender":{
  24. 12
  25.         "Name":"1255760",
  26. 13
  27.         "Tel":"",
  28. 14
  29.         "Mobile":"13700000000",
  30. 15
  31.         "ProvinceName":"广东省",
  32. 16
  33.         "CityName":"深圳市",
  34. 17
  35.         "ExpAreaName":"福田区",
  36. 18
  37.         "Address":"测试地址"
  38. 19
  39.     },
  40. 20
  41.     "Receiver":{
  42. 21
  43.         "Name":"1255760",
  44. 22
  45.         "Tel":"",
  46. 23
  47.         "Mobile":"13800000000",
  48. 24
  49.         "ProvinceName":"广东省",
  50. 25
  51.         "CityName":"深圳市",
  52. 26
  53.         "ExpAreaName":"龙华新区",
  54. 27
  55.         "Address":"测试地址2"
  56. 28
  57.     },
  58. 29
  59.     "Commodity":[
  60. 30
  61.         {
  62. 31
  63.             "GoodsName":"书本"
  64. 32
  65.         }
  66. 33
  67.     ]
  68. 34
  69. }
  70.  
  71. */
  72. import java.io.BufferedReader;
  73. import java.io.IOException;
  74. import java.io.InputStreamReader;
  75. import java.io.OutputStreamWriter;
  76. import java.io.UnsupportedEncodingException;
  77. import java.net.HttpURLConnection;
  78. import java.net.URL;
  79. import java.net.URLEncoder;
  80. import java.util.HashMap;
  81. import java.util.Map;
  82. import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
  83. import java.security.MessageDigest;
  84.  
  85. public class KdGoldAPIDemo {
  86.        
  87.         //电商ID
  88.         private String EBusinessID="1237100";  
  89.         //电商加密私钥,快递鸟提供,注意保管,不要泄漏(需重新申请ID)
  90.         private String AppKey="518a73d8-1f7f-441a-b644-33e77b49d846";  
  91.         //请求url
  92.         private String ReqURL="http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";      
  93.  
  94.         /**
  95.      * Json方式  物流信息订阅
  96.          * @throws Exception
  97.      */
  98.         public String orderTracesSubByJson() throws Exception{
  99.                 String requestData="{'Code': 'SF','Item': ["+
  100.                            "{'No': '909261024507','Bk': 'test'},"+
  101.                            "{'No': '589554393102','Bk': 'test'},"+
  102.                            "{'No': '589522101958','Bk': 'test'},"+
  103.                            "{'No': '909198822942', 'Bk': 'test'}"+
  104.                            "]}";
  105.                
  106.                 Map<String, String> params = new HashMap<String, String>();
  107.                 params.put("RequestData", urlEncoder(requestData, "UTF-8"));
  108.                 params.put("EBusinessID", EBusinessID);
  109.                 params.put("RequestType", "1005");
  110.                 String dataSign=encrypt(requestData, AppKey, "UTF-8");
  111.                 params.put("DataSign", urlEncoder(dataSign, "UTF-8"));
  112.                 params.put("DataType", "2");
  113.                
  114.                 String result=sendPost(ReqURL, params);
  115.                
  116.                 //根据公司业务处理返回的信息......
  117.                
  118.                 return result;
  119.         }
  120.        
  121.         /**
  122.      * XML方式  物流信息订阅
  123.          * @throws Exception
  124.      */
  125.         public String orderTracesSubByXml() throws Exception{
  126.                 String requestData="<?xml version=\"1.0\" encoding=\"utf-8\" ?>"+
  127.                                                         "<Content>"+
  128.                                                         "<Code>SF</Code>"+
  129.                                                         "<Items>"+
  130.                                                         "<Item>"+
  131.                                                         "<No>909261024507</No>"+
  132.                                                         "<Bk>test</Bk>"+
  133.                                                         "</Item>"+
  134.                                                         "<Item>"+
  135.                                                         "<No>909261024507</No>"+
  136.                                                         "<Bk>test</Bk>"+
  137.                                                         "</Item>"+
  138.                                                         "</Items>"+
  139.                                                         "</Content>";
  140.                
  141.                 Map<String, String> params = new HashMap<String, String>();
  142.                 params.put("RequestData", urlEncoder(requestData, "UTF-8"));
  143.                 params.put("EBusinessID", EBusinessID);
  144.                 params.put("RequestType", "1005");
  145.                 String dataSign=encrypt(requestData, AppKey, "UTF-8");
  146.                 params.put("DataSign", urlEncoder(dataSign, "UTF-8"));
  147.                 params.put("DataType", "1");
  148.                
  149.                 String result=sendPost(ReqURL, params);
  150.                
  151.                 //根据公司业务处理返回的信息......
  152.                
  153.                 return result;
  154.         }
  155.                
  156.         /**
  157.      * MD5加密
  158.      * @param str 内容      
  159.      * @param charset 编码方式
  160.          * @throws Exception
  161.      */
  162.         @SuppressWarnings("unused")
  163.         private String MD5(String str, String charset) throws Exception {
  164.             MessageDigest md = MessageDigest.getInstance("MD5");
  165.             md.update(str.getBytes(charset));
  166.             byte[] result = md.digest();
  167.             StringBuffer sb = new StringBuffer(32);
  168.             for (int i = 0; i < result.length; i++) {
  169.                 int val = result[i] & 0xff;
  170.                 if (val <= 0xf) {
  171.                     sb.append("0");
  172.                 }
  173.                 sb.append(Integer.toHexString(val));
  174.             }
  175.             return sb.toString().toLowerCase();
  176.         }
  177.        
  178.         /**
  179.      * base64编码
  180.      * @param str 内容      
  181.      * @param charset 编码方式
  182.          * @throws UnsupportedEncodingException
  183.      */
  184.         private String base64(String str, String charset) throws UnsupportedEncodingException{
  185.                 String encoded = Base64.encode(str.getBytes(charset));
  186.                 return encoded;    
  187.         }      
  188.        
  189.         @SuppressWarnings("unused")
  190.         private String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
  191.                 String result = URLEncoder.encode(str, charset);
  192.                 return result;
  193.         }
  194.        
  195.         /**
  196.      * 电商Sign签名生成
  197.      * @param content 内容  
  198.      * @param keyValue Appkey  
  199.      * @param charset 编码方式
  200.          * @throws UnsupportedEncodingException ,Exception
  201.          * @return DataSign签名
  202.      */
  203.         @SuppressWarnings("unused")
  204.         private String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception
  205.         {
  206.                 if (keyValue != null)
  207.                 {
  208.                         return base64(MD5(content + keyValue, charset), charset);
  209.                 }
  210.                 return base64(MD5(content, charset), charset);
  211.         }
  212.        
  213.          /**
  214.      * 向指定 URL 发送POST方法的请求    
  215.      * @param url 发送请求的 URL    
  216.      * @param params 请求的参数集合    
  217.      * @return 远程资源的响应结果
  218.      */
  219.         @SuppressWarnings("unused")
  220.         private String sendPost(String url, Map<String, String> params) {
  221.         OutputStreamWriter out = null;
  222.         BufferedReader in = null;        
  223.         StringBuilder result = new StringBuilder();
  224.         try {
  225.             URL realUrl = new URL(url);
  226.             HttpURLConnection conn =(HttpURLConnection) realUrl.openConnection();
  227.             // 发送POST请求必须设置如下两行
  228.             conn.setDoOutput(true);
  229.             conn.setDoInput(true);
  230.             // POST方法
  231.             conn.setRequestMethod("POST");
  232.             // 设置通用的请求属性
  233.             conn.setRequestProperty("accept", "*/*");
  234.             conn.setRequestProperty("connection", "Keep-Alive");
  235.             conn.setRequestProperty("user-agent",
  236.                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  237.             conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  238.             conn.connect();
  239.             // 获取URLConnection对象对应的输出流
  240.             out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  241.             // 发送请求参数            
  242.             if (params != null) {
  243.                           StringBuilder param = new StringBuilder();
  244.                           for (Map.Entry<String, String> entry : params.entrySet()) {
  245.                                   if(param.length()>0){
  246.                                           param.append("&");
  247.                                   }                      
  248.                                   param.append(entry.getKey());
  249.                                   param.append("=");
  250.                                   param.append(entry.getValue());                                
  251.                                   System.out.println(entry.getKey()+":"+entry.getValue());
  252.                           }
  253.                           System.out.println("param:"+param.toString());
  254.                           out.write(param.toString());
  255.             }
  256.             // flush输出流的缓冲
  257.             out.flush();
  258.             // 定义BufferedReader输入流来读取URL的响应
  259.             in = new BufferedReader(
  260.                     new InputStreamReader(conn.getInputStream(), "UTF-8"));
  261.             String line;
  262.             while ((line = in.readLine()) != null) {
  263.                 result.append(line);
  264.             }
  265.         } catch (Exception e) {            
  266.             e.printStackTrace();
  267.         }
  268.         //使用finally块来关闭输出流、输入流
  269.         finally{
  270.             try{
  271.                 if(out!=null){
  272.                     out.close();
  273.                 }
  274.                 if(in!=null){
  275.                     in.close();
  276.                 }
  277.             }
  278.             catch(IOException ex){
  279.                 ex.printStackTrace();
  280.             }
  281.         }
  282.         return result.toString();
  283.     }
  284. }
  285.  
  286. /*JSON返回
  287. 1
  288. {
  289. 2
  290.     "EBusinessID": "1151847",
  291. 3
  292.     "UpdateTime": "2016-08-09 16:42:38",
  293. 4
  294.     "Success": true,
  295. 5
  296.     "Reason": ""  
  297. 6
  298. }
  299.  
  300.  
  301. */
  302.  

回复 "不限量免费快递查询接口调用方法"

这儿你可以回复上面这条便签

captcha