[C#] 快递鸟智选物流API案例-.net →→→→→进入此内容的聊天室

来自 , 2019-10-01, 写在 C#, 查看 155 次.
URL http://www.code666.cn/view/b38e5ff5
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Text;
  7. using System.Web;
  8.  
  9. namespace KdGoldAPI
  10. {
  11.     public class KdApiExpRecommend
  12.     {
  13.         //电商ID
  14.         private string EBusinessID = "请申请http://www.kdniao.com/ServiceApply.aspx";
  15.         //电商加密私钥,注意保管,不要泄漏
  16.         private string AppKey = "请申请http://www.kdniao.com/ServiceApply.aspx";
  17.         //请求url
  18.         //测试环境
  19.         private string ReqURL = "http://testapi.kdniao.cc:8081/Ebusiness/EbusinessOrderHandle.aspx";
  20.         //正式环境
  21.         //private string ReqURL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
  22.  
  23.         /// <summary>
  24.         /// Json方式 智选物流
  25.         /// </summary>
  26.         /// <returns></returns>
  27.         public string getExpRecommendByJson()
  28.         {
  29.             string requestData = "{'MemberID':'123456','WarehouseID':'1','Detail':[{'OrderCode':'12345','IsCOD':0,'Sender':{'ProvinceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'广东','CityName':'梅州','ExpAreaName':'丰顺','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]},{'OrderCode':'12346','IsCOD':0,'Sender':{'ProvinceName':'广东省','CityName':'广州','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Receiver':{'ProvinceName':'湖南','CityName':'长沙','ExpAreaName':'龙岗区','Subdistrict':'布吉街道','Address':'518000'},'Goods':[{'ProductName':'包','Volume':'','Weight':'1'}]}]}";
  30.             Dictionary<string, string> param = new Dictionary<string, string>();
  31.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  32.             param.Add("EBusinessID", EBusinessID);
  33.             param.Add("RequestType", "2006");
  34.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  35.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  36.             param.Add("DataType", "2");
  37.  
  38.             string result = sendPost(ReqURL, param);
  39.  
  40.             //根据公司业务处理返回的信息......
  41.  
  42.             return result;
  43.         }
  44.  
  45.                 /// <summary>
  46.         /// Json方式 运费模板导入
  47.         /// </summary>
  48.         /// <returns></returns>
  49.                 public string importCostTemplateByJson()
  50.         {
  51.             string requestData = "{'MemberID':'123456','Detail':[{'ShipperCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'龙岗','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':''},{'ShipperCode':'YD','SendProvince':'广东','SendCity':'广州','SendExpArea':'天河','ReceiveProvince':'湖南','ReceiveCity':'长沙','ReceiveExpArea':'雨花','FirstWeight':'1','FirstFee':'8','AdditionalWeight':'1','AdditionalFee':'10','WeightFormula':'{{w-0}-0.4}*{{{1000-w}-0.4}+1}*4.700+ {{w-1000}-0.6}*[(w-1000)/1000]*4.700)','ShippingType':'1','IntervalList':[{'StartWeight': 1.0,'EndWeight': 2.0, 'Fee': 3.0}]}]}";
  52.             Dictionary<string, string> param = new Dictionary<string, string>();
  53.             param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8));
  54.             param.Add("EBusinessID", EBusinessID);
  55.             param.Add("RequestType", "2004");
  56.             string dataSign = encrypt(requestData, AppKey, "UTF-8");
  57.             param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8));
  58.             param.Add("DataType", "2");
  59.  
  60.             string result = sendPost(ReqURL, param);
  61.  
  62.             //根据公司业务处理返回的信息......
  63.  
  64.             return result;
  65.         }
  66.  
  67.         /// <summary>
  68.         /// Post方式提交数据,返回网页的源代码
  69.         /// </summary>
  70.         /// <param name="url">发送请求的 URL</param>
  71.         /// <param name="param">请求的参数集合</param>
  72.         /// <returns>远程资源的响应结果</returns>
  73.         private string sendPost(string url, Dictionary<string, string> param)
  74.         {
  75.             string result = "";
  76.             StringBuilder postData = new StringBuilder();
  77.             if (param != null && param.Count > 0)
  78.             {
  79.                 foreach (var p in param)
  80.                 {
  81.                     if (postData.Length > 0)
  82.                     {
  83.                         postData.Append("&");
  84.                     }
  85.                     postData.Append(p.Key);
  86.                     postData.Append("=");
  87.                     postData.Append(p.Value);
  88.                 }
  89.             }
  90.             byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
  91.             try
  92.             {
  93.  
  94.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  95.                 request.ContentType = "application/x-www-form-urlencoded";
  96.                 request.Referer = url;
  97.                 request.Accept = "*/*";
  98.                 request.Timeout = 30 * 1000;
  99.                 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)";
  100.                 request.Method = "POST";
  101.                 request.ContentLength = byteData.Length;
  102.                 Stream stream = request.GetRequestStream();
  103.                 stream.Write(byteData, 0, byteData.Length);
  104.                 stream.Flush();
  105.                 stream.Close();
  106.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  107.                 Stream backStream = response.GetResponseStream();
  108.                 StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
  109.                 result = sr.ReadToEnd();
  110.                 sr.Close();
  111.                 backStream.Close();
  112.                 response.Close();
  113.                 request.Abort();
  114.             }
  115.             catch (Exception ex)
  116.             {
  117.                 result = ex.Message;
  118.             }
  119.             return result;
  120.         }
  121.  
  122.         ///<summary>
  123.         ///电商Sign签名
  124.         ///</summary>
  125.         ///<param name="content">内容</param>
  126.         ///<param name="keyValue">Appkey</param>
  127.         ///<param name="charset">URL编码 </param>
  128.         ///<returns>DataSign签名</returns>
  129.         private string encrypt(String content, String keyValue, String charset)
  130.         {
  131.             if (keyValue != null)
  132.             {
  133.                 return base64(MD5(content + keyValue, charset), charset);
  134.             }
  135.             return base64(MD5(content, charset), charset);
  136.         }
  137.  
  138.         ///<summary>
  139.         /// 字符串MD5加密
  140.         ///</summary>
  141.         ///<param name="str">要加密的字符串</param>
  142.         ///<param name="charset">编码方式</param>
  143.         ///<returns>密文</returns>
  144.         private string MD5(string str, string charset)
  145.         {
  146.             byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
  147.             try
  148.             {
  149.                 System.Security.Cryptography.MD5CryptoServiceProvider check;
  150.                 check = new System.Security.Cryptography.MD5CryptoServiceProvider();
  151.                 byte[] somme = check.ComputeHash(buffer);
  152.                 string ret = "";
  153.                 foreach (byte a in somme)
  154.                 {
  155.                     if (a < 16)
  156.                         ret += "0" + a.ToString("X");
  157.                     else
  158.                         ret += a.ToString("X");
  159.                 }
  160.                 return ret.ToLower();
  161.             }
  162.             catch
  163.             {
  164.                 throw;
  165.             }
  166.         }
  167.  
  168.         /// <summary>
  169.         /// base64编码
  170.         /// </summary>
  171.         /// <param name="str">内容</param>
  172.         /// <param name="charset">编码方式</param>
  173.         /// <returns></returns>
  174.         private string base64(String str, String charset)
  175.         {
  176.             return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
  177.         }
  178.     }
  179. }
  180.  

回复 "快递鸟智选物流API案例-.net"

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

captcha