无平台限制,依赖于快递 api 网接口
- ----------------实体类
- [DataContract]
- public class SyncResponseEntity
- {
- public SyncResponseEntity() { }
- ///
- /// 需要查询的快递代号
- ///
- [DataMember(Order = 0, Name = "id")]
- public string ID { get; set; }
- ///
- /// 需要查询的快递名称
- ///
- [DataMember(Order = 1, Name = "name")]
- public string Name { get; set; }
- ///
- /// 需要查询的快递单号
- ///
- [DataMember(Order = 2, Name = "order")]
- public string Order { get; set; }
- ///
- /// 消息内容
- ///
- [DataMember(Order = 5, Name = "message")]
- public string Message { get; set; }
- ///
- /// 服务器状态
- ///
- [DataMember(Order = 6, Name = "errcode")]
- public string ErrCode { get; set; }
- ///
- /// 运单状态
- ///
- [DataMember(Order = 7, Name = "status")]
- public int Status { get; set; }
- ///
- /// 跟踪记录
- ///
- [DataMember(Order = 8, Name = "data")]
- public List<Order> Data { get; set; }
- }
- [DataContract(Name = "data")]
- public class Order
- {
- public Order() { }
- public Order(string time, string content)
- {
- this.Time = time;
- this.Content = content;
- }
- [DataMember(Order = 0, Name = "time")]
- public string Time { get; set; }
- [DataMember(Order = 1, Name = "content")]
- public string Content { get; set; }
- }
- ---------调用方法
- public static int uid = Utils.GetAppConfig("KUAIDIAPI_UID", 0);
- public static string sync_url = Utils.GetAppConfig("KUAIDIAPI_SYNC_URL", string.Empty);
- public static string key = Utils.GetAppConfig("KUAIDIAPI_KEY", string.Empty);
- ///
- /// 同步单号查询方法
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- public static T APIQueryDataSYNC<T>(string id,
- string order,
- bool isSign,
- bool isLast,
- T defaultValue)
- {
- try
- {
- string currTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- string currKey = key;
- if (isSign)
- {
- currKey = Utils.GetSign(uid, key, id, order, currTime);
- currKey += "&issign;=true";
- }
- string url = sync_url + string.Format("?uid={0}&key;={1}&id;={2}ℴ={3}&time;={4}",
- uid, currKey, id, order, HttpUtility.UrlEncode(currTime));
- string html = Utils.GET_WebRequestHTML("utf-8", url);
- if (!string.IsNullOrEmpty(html))
- return Utils.JsonToObj<T>(html, defaultValue);
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- return defaultValue;
- }
- }
- ///
- /// 辅助工具类
- ///
- public class Utils
- {
- public static string GetSign(int uid, string key, string id, string order, string time)
- {
- string sign = string.Format("uid={0}&key;={1}&id;={2}ℴ={3}&time;={4}",
- uid,
- key,
- id,
- HttpUtility.UrlEncode(order.ToLower()),
- HttpUtility.UrlEncode(time));
- return Md5Encrypt(sign.ToLower(), "utf-8");
- }
- public static string Md5Encrypt(string strToBeEncrypt, string encodingName)
- {
- MD5 md5 = new MD5CryptoServiceProvider();
- Byte[] FromData = System.Text.Encoding.GetEncoding(encodingName).GetBytes(strToBeEncrypt);
- Byte[] TargetData = md5.ComputeHash(FromData);
- string Byte2String = "";
- for (int i = 0; i < TargetData.Length; i++)
- {
- Byte2String += TargetData[i].ToString("x2");
- }
- return Byte2String;
- }
- public static T GetRequest<T>(string key, T defaultValue)
- {
- string value = HttpContext.Current.Request[key];
- if (string.IsNullOrEmpty(value))
- {
- return defaultValue;
- }
- else
- {
- try
- {
- return (T)Convert.ChangeType(value, typeof(T));
- }
- catch
- {
- return defaultValue;
- }
- }
- }
- public static T GetAppConfig<T>(string key, T defaultValue)
- {
- string value = ConfigurationManager.AppSettings[key];
- if (string.IsNullOrEmpty(value))
- {
- return defaultValue;
- }
- else
- {
- try
- {
- return (T)Convert.ChangeType(value, typeof(T));
- }
- catch
- {
- return defaultValue;
- }
- }
- }
- public static string ObjToJson<T>(T data)
- {
- try
- {
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(data.GetType());
- using (MemoryStream ms = new MemoryStream())
- {
- serializer.WriteObject(ms, data);
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- catch
- {
- return null;
- }
- }
- public static T JsonToObj<T>(string json, T defaultValue)
- {
- try
- {
- System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
- {
- object obj = serializer.ReadObject(ms);
- return (T)Convert.ChangeType(obj, typeof(T));
- }
- }
- catch
- {
- return defaultValue;
- }
- }
- public static T XmlToObj<T>(string xml, T defaultValue)
- {
- try
- {
- System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
- {
- object obj = serializer.ReadObject(ms);
- return (T)Convert.ChangeType(obj, typeof(T));
- }
- }
- catch
- {
- return defaultValue;
- }
- }
- public static string ObjToXml<T>(T data)
- {
- System.Runtime.Serialization.DataContractSerializer serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream())
- {
- serializer.WriteObject(ms, data);
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- public static string GET_WebRequestHTML(string encodingName, string htmlUrl)
- {
- string html = string.Empty;
- try
- {
- Encoding encoding = Encoding.GetEncoding(encodingName);
- WebRequest webRequest = WebRequest.Create(htmlUrl);
- HttpWebResponse httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
- Stream responseStream = httpWebResponse.GetResponseStream();
- StreamReader streamReader = new StreamReader(responseStream, encoding);
- html = streamReader.ReadToEnd();
- httpWebResponse.Close();
- responseStream.Close();
- streamReader.Close();
- }
- catch (WebException ex)
- {
- throw new Exception(ex.Message);
- }
- return html;
- }
- ///
- /// 将网址类容转换成文本字符串 post请求
- ///
- /// 要post的数据
- /// 目标url
- /// 服务器响应
- public static string POST_HttpWebRequestHTML( string encodingName,
- string htmlUrl,
- string postData)
- {
- string html = string.Empty;
- try
- {
- Encoding encoding = Encoding.GetEncoding(encodingName);
- byte[] bytesToPost = encoding.GetBytes(postData);
- WebRequest webRequest = WebRequest.Create(htmlUrl);
- HttpWebRequest httpRequest = webRequest as System.Net.HttpWebRequest;
- httpRequest.Method = "POST";
- httpRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
- httpRequest.ContentType = "application/x-www-form-urlencoded";
- httpRequest.ContentLength = bytesToPost.Length;
- httpRequest.Timeout = 15000;
- httpRequest.ReadWriteTimeout = 15000;
- Stream requestStream = httpRequest.GetRequestStream();
- requestStream.Write(bytesToPost, 0, bytesToPost.Length);
- requestStream.Close();
- HttpWebResponse httpWebResponse = (HttpWebResponse)httpRequest.GetResponse();
- Stream responseStream = httpWebResponse.GetResponseStream();
- StreamReader streamReader = new StreamReader(responseStream, encoding);
- html = streamReader.ReadToEnd();
- }
- catch (WebException ex)
- {
- throw new Exception(ex.Message);
- }
- return html;
- }
- }
- ///
- /// 接口类型
- ///
- public enum APIType
- {
- //同步查询
- SYNC = 1
- }
基本上代码都在上面。在带
上申请一个 uid 就大功告成。
来源: http://www.bubuko.com/infodetail-2427821.html