方法呼叫的代碼實作
//電商ID
string eEBusinessID = "test1617571";
//電商加密私鑰,快遞鳥提供,沒有去快遞鳥注冊http://www.kdniao.com/reg 注意保管,不要泄漏
string appKey= "554343b2-7252-439b-b4eb-1af42c8f2175";
//請求url
string reqURL = "http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json";
//請求指令
string reqType="1002";
//2-json
string dataType = "2";
//字符編碼采用UTF-8
string charset = "UTF-8";
//JSON字串string
string jsonStr =
"{\"OrderCode\":\"\",\"ShipperCode\":\"SF\",\"LogisticCode\":\"118461988807\"}" ;
//把(jsonStr+APIKey)進行MD5加密
string md5Str=MD5(jsonStr + apiKey, charset);
//把md5Str 進行Base64編碼
string base64Str=base64(md5Str,charset);
//進行URL編碼 (utf-8)
string datasign = HttpUtility.UrlEncode(base64Str, charset);
//請求報文引數
string postStr = "RequestType=reqType&EBusinessID= eEBusinessID&RequestData=https://bbs.csdn.net/topics/jsonStr
&DataSign= datasign&DataType=dataType";
//通訊協議使用Http協議Post請求方式 回傳軌跡資料
string post = SendPost(reqURL, postStr);
//獲取到的post資料就是快遞鳥回傳的完整報文,接下來自己寫一個決議json的方法就能獲取到里面的欄位資訊。
C#封裝的方法
///<summary>
/// 字串MD5加密
///</summary>
///<param name="str">要加密的字串</param>
///<param name="charset">編碼方式</param>
///<returns>密文</returns>
private string MD5(string str, string charset)
{
byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str);
try
{
System.Security.Cryptography.MD5CryptoServiceProvider check;
check = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] somme = check.ComputeHash(buffer);
string ret = "";
foreach (byte a in somme)
{
if (a < 16)
ret += "0" + a.ToString("X");
else
ret += a.ToString("X");
}
return ret.ToLower();
}
catch
{
throw;
}
}
/// <summary>
/// base64編碼
/// </summary>
/// <param name="str">內容</param>
/// <param name="charset">編碼方式</param>
/// <returns></returns>
private string base64(String str, String charset)
{
return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str));
}
/// <summary>
/// Post方式提交資料,回傳網頁的源代碼
/// </summary>
/// <param name="url">發送請求的 URL</param>
/// <param name="postData">請求報文引數</param>
/// <returns>遠程資源的回應結果</returns>
private string SendPost(string url, string postData)
{
string result = "";
byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString());
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = url;
request.Accept = "*/*";
request.Timeout = 30 * 1000;
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)";
request.Method = "POST";
request.ContentLength = byteData.Length;
Stream stream = request.GetRequestStream();
stream.Write(byteData, 0, byteData.Length);
stream.Flush();
stream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream backStream = response.GetResponseStream();
StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8"));
result = sr.ReadToEnd();
sr.Close();
backStream.Close();
response.Close();
request.Abort();
}
catch (Exception ex)
{
result = ex.ToString();
}
return result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/96315.html
標籤:C#
