中通打印助手開發到如今已通過去了四個月了,從七月份開始成立項目,前後通過兩我的的接手後,已經迭代了不少的版本了,我也很用人很認真的在作,爲咱們中通的網點考慮,如何更快更好更方便的實現打印,打印助手就是用來打印,這個是軟件的最終目的,若是這個沒有達到那這個就是一個失敗的項目。html
在開發中也慢慢的加入了不少的小功能,如今寫博客和你們共享一下,至於代碼,我會公開一些,公司的項目也沒有放到GIT上,因此源碼暫時不開放了,須要安裝包看看的,請到中通的官網下載,我這裏提供連接地址:http://www.zto.cn/GuestService/Printexpress
這是小工具的截圖json
這些都是咱們中通網點可能會用到的,特別是大頭筆查詢,網點很贊同,下面介紹一下查快遞的功能工具
查快遞(自動識別單號)post
執行邏輯測試
咱們能夠在快遞100的官網進行單號查詢,這個其實也是挺好的,很方便,爲何人家作的好,就是方便好用,看下我抓取的截圖,這個就是這功能的關鍵點,請求接口,解析返回的Json,對就是這樣的簡單。url
看代碼spa
1 /// <summary> 2 /// 查詢快遞100接口 3 /// </summary> 4 /// <param name="expressCode">快遞公司編號(從快遞100抓取)</param> 5 /// <param name="billCode">快遞單號</param> 6 public void Search(string expressCode, string billCode) 7 { 8 //請求的Url: http://www.kuaidi100.com/query?type=shunfeng&postid=201215344815&id=1&valicode=&temp=0.12316451570950449 9 string json = HttpGet("http://www.kuaidi100.com/query", "type=" + expressCode + "&postid=" + billCode); 10 if (string.IsNullOrEmpty(json)) 11 { 12 return; 13 } 14 Dictionary<string, object> ht = SelectDictionary(json); 15 if (ht["status"].ToString() == "200") 16 { 17 ArrayList aList = new ArrayList(); 18 aList = (ArrayList)ht["data"]; 19 List<BillResult> billResults = new List<BillResult>(); 20 for (int i = 0; i < aList.Count; i++) 21 { 22 Dictionary<string, object> di = (Dictionary<string, object>)aList[i]; 23 billResults.Add(new BillResult() 24 { 25 time = di["time"].ToString(), 26 context = di["context"].ToString() 27 }); 28 } 29 gcBill.DataSource = billResults; 30 } 31 else 32 { 33 XtraMessageBox.Show(@"快遞或單號錯誤", AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Warning); 34 } 35 } 36 /// <summary> 37 /// GET模擬請求 38 /// </summary> 39 /// <param name="url">URL路徑</param> 40 /// <param name="postDataStr">參數</param> 41 /// <returns>返回請求信息</returns> 42 public static string HttpGet(string url, string postDataStr) 43 { 44 try 45 { 46 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + (postDataStr == "" ? "" : "?") + postDataStr); 47 request.AllowAutoRedirect = true; 48 request.Method = "GET"; 49 request.ContentType = "text/html;charset=UTF-8"; 50 var c = new CookieContainer(); 51 request.CookieContainer = c; 52 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 53 Stream myResponseStream = response.GetResponseStream(); 54 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); 55 string retString = myStreamReader.ReadToEnd(); 56 myStreamReader.Close(); 57 myResponseStream.Close(); 58 return retString; 59 } 60 catch (Exception) 61 { 62 return ""; 63 } 64 } 65 66 /// <summary> 67 /// 快遞100返回的Json解析實體 68 /// </summary> 69 public class BillResult 70 { 71 public string time { get; set; } 72 73 public string context { get; set; } 74 }
你們能夠測試一下,這個主要就是來方便粘貼單號直接顯示快遞的物流跟蹤記錄,簡單好用。http://www.paymob.cncode