亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

小組件---快遞查詢組件

2019-11-14 16:08:52
字體:
來源:轉載
供稿:網友

        最近翻一翻郵件,發現有以前實習的時候幫公司做的一個獲取快遞網站的快遞信息.Net組件,我copy出來了的?,F在就分享一下。

       一.調研快遞100網

           1. 通過httpwatch抓取了快遞100網查詢快遞的地址 http://m.kuaidi100.com/query,API訪問格式是  queryUrl + "?type=" +快遞公司類型+ "&postid=" + 快遞單號;

               我的另一篇博客里面有寫到如何抓取:  一個有用的網絡監控軟件

           2. 默認返回Json字符串格式是:

{"message":"ok","status":"1","state":"3","data":            [{"time":"2012-07-07 13:35:14","context":"客戶已簽收"},             {"time":"2012-07-07 09:10:10","context":"離開 [北京石景山營業廳] 派送中,遞送員[溫],電話[]"},             {"time":"2012-07-06 19:46:38","context":"到達 [北京石景山營業廳]"},             {"time":"2012-07-06 15:22:32","context":"離開 [北京石景山營業廳] 派送中,遞送員[溫],電話[]"},             {"time":"2012-07-06 15:05:00","context":"到達 [北京石景山營業廳]"},             {"time":"2012-07-06 13:37:52","context":"離開 [北京_同城中轉站] 發往 [北京石景山營業廳]"},             {"time":"2012-07-06 12:54:41","context":"到達 [北京_同城中轉站]"},             {"time":"2012-07-06 11:11:03","context":"離開 [北京運轉中心駐站班組] 發往 [北京_同城中轉站]"},             {"time":"2012-07-06 10:43:21","context":"到達 [北京運轉中心駐站班組]"},             {"time":"2012-07-05 21:18:53","context":"離開 [福建_廈門支公司] 發往 [北京運轉中心_航空]"},             {"time":"2012-07-05 20:07:27","context":"已取件,到達 [福建_廈門支公司]"}            ]} 

         二. 定義實體類.
             按照Json格式定義,實體類:

             Notes:1.MQueryParameter 查詢條件 ;2.MResultMsg 查詢后的返回結果; 3.ExPRessageInfo單個時間段的物流情況;4.ErrorMsg:記錄存儲訪問錯誤,包括配置文件錯誤,以及web訪問錯誤

    public class MQueryParameter    {        /// <summary>        /// 快遞公司        /// </summary>        public string TypeCom { get; set; }        /// <summary>        /// 快遞訂單號        /// </summary>        public string OrderId { get; set; }    }    public class MResultMsg    {        public bool Result { get; set; }        public StateType State { get; set; }        public string JsonMessage { get; set; }        public List<ExpressageInfo> Data { get; set; }        public ErrorMsg Error { get; set; }    }    public class ExpressageInfo    {                public DateTime Time { get; set; }        public string Context { get; set; }    }    public enum StateType    {        在途,        攬件,        疑難,        簽收,        退簽,        派件,        退回    }    public class ErrorMsg    {        public string ErrorCode { get; set; }        public string ErrorMessage { get; set; }    }

        三.配置文件.
             對于查詢的API URI 我們應該用配置文件存儲起來,以及快遞的Map信息. 主要是用于放置API變化.

        Note: xml里面用到了轉義:&(邏輯與)  &amp; <(小于) &lt; >(大于) &gt; "(雙引號)  &quot; '(單引號)  &apos; [/size]

<configuration>  <appSettings>        <!--手機api服務器訪問地址-->    <add key="queryUrl" value="http://m.kuaidi100.com/query?type={0}&amp;postid={1}" />    <!--順豐快遞對應的編碼-->    <add key="順豐速遞" value="shunfeng"/>    <add key="中通速遞" value="zhongtong"/>  </appSettings></configuration>

         三.Helper方法.
             通過Helper的提供的方法對QueryParam參數的Check以及數據獲取,方法里面的所有異常都必須處理。組件按理是不能出現讓程序崩潰的情況的。所以所有異常必須處理。然后封裝到ErrorMsg對象中.

 public static MResultMsg GetExpressageMessage(MQueryParameter para)        {            // 獲取配置文件            Configuration config = null;            string queryUrl = string.Empty;            string com = string.Empty;            MResultMsg msg = new MResultMsg();if (string.IsNullOrEmpty(para.TypeCom))            {                msg.Result = false;                msg.Error = new ErrorMsg() { ErrorCode = "001", ErrorMessage = "物流公司不能為空" };                return msg;            }            if (string.IsNullOrEmpty(para.OrderId))            {                msg.Result = false;                msg.Error = new ErrorMsg() { ErrorCode = "002", ErrorMessage = "訂單號不能為空" };                return msg;            }            try            {                string configPath = System.IO.Path.Combine(AppDomain.CurrentDomain.SetupInformation.applicationBase, "Expressage.config");                ExeConfigurationFileMap map = new ExeConfigurationFileMap();                map.ExeConfigFilename = configPath;                config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);                queryUrl = config.AppSettings.Settings["queryUrl"] == null ? string.Empty : config.AppSettings.Settings["queryUrl"].Value;                                com = config.AppSettings.Settings[para.TypeCom] == null ? string.Empty : config.AppSettings.Settings[para.TypeCom].Value;            }            catch (Exception ex)            {                msg.Result = false;                msg.Error = new ErrorMsg() { ErrorCode = "003", ErrorMessage = ex.Message };                return msg;            }                       if (string.IsNullOrEmpty(com))            {                msg.Result = false;                msg.Error = new ErrorMsg() { ErrorCode = "004", ErrorMessage = "配置文件缺少對于的物流公司類型" };                                return msg;            }            // 網上獲取物流信息                string jsonResult = null;            try            {                queryUrl = string.Format(queryUrl, com, para.OrderId);                WebRequest request = WebRequest.Create(@queryUrl);                WebResponse response = request.GetResponse();                string message = string.Empty;                using (Stream stream = response.GetResponseStream())                {                    Encoding encode = Encoding.UTF8;                    using (StreamReader reader = new StreamReader(stream, encode))                    {                        message = reader.ReadToEnd();                    }                    jsonResult = message;                }            }            catch (Exception ex)            {                msg.Result = false;                msg.Error = new ErrorMsg() { ErrorCode = "005", ErrorMessage = ex.Message };                return msg;            }            msg = JSONStringToObj<MResultMsg>(jsonResult);            msg.JsonMessage = jsonResult;            msg.Result = true;            return msg;        }        private static T JSONStringToObj<T>(string JsonStr)        {            javaScriptSerializer Serializer = new JavascriptSerializer();            T objs = Serializer.Deserialize<T>(JsonStr);            return objs;        }

           四. 下載地址:
              Frank.Expressage.zip 里面有一個測試數據,可能時間過太久里面那個快遞單號也會出現過期情況查詢不到數據.

           五.總結

               代碼是以前寫的沒做修改,就貼上來了。感覺有點不厚道,因為那個Uri是自己用httpwatch抓的。單獨獲取API 希望大家還是訪問官網去申請吧。抓取的uriApi對用戶有訪問頻率限制的。訪問過于頻繁。就會被封掉。 下面是官網地址,請支持正版:  http://www.kuaidi100.com/openapi/applyapi.shtml

 

 

     

            

 

     

    

      


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产天堂福利天堂| 国产91久久婷婷一区二区| xvideos亚洲人网站| 免费99精品国产自在在线| 国产亚洲精品久久| 久久久亚洲福利精品午夜| 欧美在线亚洲一区| 国产日韩欧美在线播放| 日韩欧美在线视频观看| 中文字幕亚洲欧美日韩在线不卡| 日韩激情视频在线播放| 亚洲女人天堂视频| 国产一区二区丝袜| 亚洲天堂av在线免费| 色婷婷久久一区二区| 欧美一区二区三区四区在线| 91精品国产九九九久久久亚洲| 日韩国产精品视频| 精品人伦一区二区三区蜜桃免费| 久久精品亚洲一区| 亚洲女人天堂av| 久久久久亚洲精品成人网小说| 亚洲欧美日韩一区二区在线| 久久免费少妇高潮久久精品99| 久久综合久中文字幕青草| 日韩欧美在线视频日韩欧美在线视频| 色诱女教师一区二区三区| 伊人av综合网| 国内精品一区二区三区四区| 久久激情视频免费观看| 日韩在线观看精品| 色综合天天狠天天透天天伊人| 97香蕉久久超级碰碰高清版| 日韩欧美国产中文字幕| 韩国国内大量揄拍精品视频| 琪琪亚洲精品午夜在线| 亚洲国内精品视频| 国产精品吊钟奶在线| 大荫蒂欧美视频另类xxxx| 国产不卡视频在线| 久久久亚洲欧洲日产国码aⅴ| 久久精视频免费在线久久完整在线看| 久久精品一本久久99精品| 国产精品美女呻吟| 亚洲欧美国产制服动漫| 懂色aⅴ精品一区二区三区蜜月| 日本午夜精品理论片a级appf发布| 色小说视频一区| 久久精品电影网站| 爽爽爽爽爽爽爽成人免费观看| 2018中文字幕一区二区三区| 97超碰色婷婷| 亚洲欧美一区二区精品久久久| 亚洲精品suv精品一区二区| 日韩电视剧在线观看免费网站| 尤物精品国产第一福利三区| 国产91在线高潮白浆在线观看| 国产亚洲精品久久久久久| 欧美肥臀大乳一区二区免费视频| 亚洲视频在线观看视频| 欧美在线观看www| 日韩中文理论片| 亚洲精品中文字幕有码专区| 欧美激情在线狂野欧美精品| 8x海外华人永久免费日韩内陆视频| 欧美性极品少妇精品网站| 国产在线精品一区免费香蕉| 久久久免费高清电视剧观看| 国产成人jvid在线播放| 欧美激情图片区| 色妞色视频一区二区三区四区| 伊人成人开心激情综合网| 国产小视频91| 一个色综合导航| 精品视频一区在线视频| 在线国产精品播放| 疯狂蹂躏欧美一区二区精品| 久久人人爽人人爽人人片亚洲| 亚洲男人天堂手机在线| 欧亚精品中文字幕| 久久综合九色九九| 日韩精品视频免费专区在线播放| 亚洲色图激情小说| 亚洲欧美中文在线视频| 国产精品视频精品| 欧美激情免费观看| 欧美国产激情18| 国产v综合v亚洲欧美久久| 国产精品精品久久久| 日韩欧美一区视频| 欧美亚洲视频一区二区| 久久99久国产精品黄毛片入口| 国产日韩精品在线播放| 久久久精品一区| 一区二区三区国产在线观看| 国产精品久久一区主播| 欧美夫妻性生活xx| 日韩精品中文字幕在线| 91亚洲国产成人久久精品网站| 欧美第一页在线| 91探花福利精品国产自产在线| 2019最新中文字幕| 日韩在线免费视频观看| 亚洲在线免费观看| 精品国产一区二区三区四区在线观看| 亚洲日本中文字幕免费在线不卡| 欧美精品情趣视频| 亚洲色图偷窥自拍| 在线激情影院一区| 亚洲成色999久久网站| 亚洲最大的网站| 日韩av最新在线观看| 奇米成人av国产一区二区三区| 久久亚洲电影天堂| 国产精品久久久久久久久久久久久久| 久久久久久久久国产精品| 精品视频在线播放| 亚洲精品电影在线| 欧美理论电影网| 国产最新精品视频| 亚洲在线视频观看| 国产亚洲激情视频在线| 欧美自拍视频在线| 精品欧美国产一区二区三区| 97超碰国产精品女人人人爽| 91精品免费久久久久久久久| 国产一区二区激情| 91精品国产色综合| 精品国产31久久久久久| 日韩欧美在线视频免费观看| 91tv亚洲精品香蕉国产一区7ujn| 欧美黑人性生活视频| 欧美亚洲另类视频| 人人做人人澡人人爽欧美| 久久精品国产2020观看福利| 日韩欧美精品网站| 亚洲人成电影在线观看天堂色| 中文字幕国产亚洲2019| 98精品国产高清在线xxxx天堂| 久久免费视频在线观看| 日韩a**站在线观看| 国产91色在线播放| 懂色av中文一区二区三区天美| 欧美精品www在线观看| 精品亚洲精品福利线在观看| 欧美一乱一性一交一视频| 欧美激情视频一区二区三区不卡| 日韩有码在线观看| 国产精品极品美女在线观看免费| 亚洲视频在线观看视频| 国产亚洲欧美另类中文| 精品久久久久久国产91| 日韩在线观看免费高清| 久久久亚洲福利精品午夜| 蜜月aⅴ免费一区二区三区| 国产精品视频成人| 日韩精品中文字幕有码专区| 久久99亚洲精品| 日韩欧美国产视频| 久久久久久国产精品久久| 羞羞色国产精品| 亚洲片国产一区一级在线观看| 91高潮精品免费porn| 亚洲女成人图区|