[C#] 快递查询API-快递鸟接口c#调用 →→→→→进入此内容的聊天室

来自 , 2019-06-18, 写在 C#, 查看 105 次.
URL http://www.code666.cn/view/41ab1b1d
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web;
  6. using System.Net;
  7. using System.IO;
  8.  
  9. namespace KdGoldAPI
  10. {
  11.     public class KdApiSearchDemo
  12.     {
  13.         //电商ID
  14.         private string EBusinessID = "1237100";
  15.         //电商加密私钥,快递鸟提供,注意保管,不要泄漏
  16.         private string AppKey = "518a73d8-1f7f-441a-b644-33e77b49d846";
  17.         //请求url
  18.         private string ReqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
  19.  
  20.         /// <summary>
  21.         /// Json方式 查询订单物流轨迹
  22.         /// </summary>
  23.         /// <returns></returns>
  24.         public string getOrderTracesByJson()
  25.         {
  26.             string requestData = "{'OrderCode':'','ShipperCode':'SF','LogisticCode':'589707398027'}";
  27.  
  28.             Dictionary<string, string> param = new Dictionary<string, string>();
  29.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  30.             param.Add("EBusinessID", EBusinessID);
  31.             param.Add("RequestType", "1002");
  32.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  33.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  34.             param.Add("DataType", "2");
  35.  
  36.             string result = sendPost(ReqURL, param);
  37.  
  38.             //根据公司业务处理返回的信息......
  39.  
  40.             return result;
  41.         }
  42.  
  43.         /// <summary>
  44.         /// XML方式 查询订单物流轨迹
  45.         /// </summary>
  46.         /// <returns></returns>
  47.         public string getOrderTracesByXml()
  48.         {
  49.             string requestData = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
  50.                                 "<Content>" +
  51.                                 "<OrderCode></OrderCode>" +
  52.                                 "<ShipperCode>SF</ShipperCode>" +
  53.                                 "<LogisticCode>589707398027</LogisticCode>" +
  54.                                 "</Content>";
  55.  
  56.             Dictionary<string, string> param = new Dictionary<string, string>();
  57.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  58.             param.Add("EBusinessID", EBusinessID);
  59.             param.Add("RequestType", "1002");
  60.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  61.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  62.             param.Add("DataType", "1");
  63.  
  64.             string result = sendPost(ReqURL, param);
  65.  
  66.             //根据公司业务处理返回的信息......
  67.  
  68.             return result;
  69.         }
  70.  
  71.         /// <summary>
  72.         /// Post方式提交数据,返回网页的源代码
  73.         /// </summary>
  74.         /// <param name="url">发送请求的 URL</param>
  75.         /// <param name="param">请求的参数集合</param>
  76.         /// <returns>远程资源的响应结果</returns>
  77.         private string sendPost(string url, Dictionary<string, string> param)
  78.         {
  79.             string result = "";
  80.             StringBuilder postData = new StringBuilder();
  81.             if (param != null && param.Count > 0)
  82.             {
  83.                 foreach (var p in param)
  84.                 {
  85.                     if (postData.Length > 0)
  86.                     {
  87.                         postData.Append("&");
  88.                     }
  89.                     postData.Append(p.Key);
  90.                     postData.Append("=");
  91.                     postData.Append(p.Value);
  92.                 }
  93.             }
  94.             byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
  95.             try
  96.             {
  97.  
  98.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  99.                 request.ContentType = "application/x-www-form-urlencoded";
  100.                 request.Referer = url;
  101.                 request.Accept = "*/*";
  102.                 request.Timeout = 30 * 1000;
  103.                 request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
  104.                 request.Method = "POST";
  105.                 request.ContentLength = byteData.Length;
  106.                 Stream stream = request.GetRequestStream();
  107.                 stream.Write(byteData, 0, byteData.Length);
  108.                 stream.Flush();
  109.                 stream.Close();
  110.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  111.                 Stream backStream = response.GetResponseStream();
  112.                 StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
  113.                 result = sr.ReadToEnd();
  114.                 sr.Close();
  115.                 backStream.Close();
  116.                 response.Close();
  117.                 request.Abort();
  118.             }
  119.             catch (Exception ex)
  120.             {
  121.                 result = ex.Message;
  122.             }
  123.             return result;
  124.         }
  125.  
  126.         ///<summary>
  127.         ///电商Sign签名
  128.         ///</summary>
  129.         ///<param name="content">内容</param>
  130.         ///<param name="keyValue">Appkey</param>
  131.         ///<param name="charset">URL编码 </param>
  132.         ///<returns>DataSign签名</returns>
  133.         private string encrypt(String content, String keyValue, String charset)
  134.         {
  135.             if (keyValue != null)
  136.             {
  137.                 return base64(MD5(content + keyValue, charset), charset);
  138.             }
  139.             return base64(MD5(content, charset), charset);
  140.         }
  141.  
  142.         ///<summary>
  143.         /// 字符串MD5加密
  144.         ///</summary>
  145.         ///<param name="str">要加密的字符串</param>
  146.         ///<param name="charset">编码方式</param>
  147.         ///<returns>密文</returns>
  148.         private string MD5(string str, string charset)
  149.         {
  150.             byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
  151.             try
  152.             {
  153.                 System.Security.Cryptography.MD5CryptoServiceProvider check;
  154.                 check = new System.Security.Cryptography.MD5CryptoServiceProvider();
  155.                 byte[] somme = check.ComputeHash(buffer);
  156.                 string ret = "";
  157.                 foreach (byte a in somme)
  158.                 {
  159.                     if (a < 16)
  160.                         ret += "0" + a.ToString("X");
  161.                     else
  162.                         ret += a.ToString("X");
  163.                 }
  164.                 return ret.ToLower();
  165.             }
  166.             catch
  167.             {
  168.                 throw;
  169.             }
  170.         }
  171.  
  172.         /// <summary>
  173.         /// base64编码
  174.         /// </summary>
  175.         /// <param name="str">内容</param>
  176.         /// <param name="charset">编码方式</param>
  177.         /// <returns></returns>
  178.         private string base64(String str, String charset)
  179.         {
  180.             return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
  181.         }
  182.     }
  183. }
  184.  

回复 "快递查询API-快递鸟接口c#调用"

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

captcha