public ExpressData GetExpressData(string expressCompanyName, string shipOrderNumber) { string kuaidi100Code = GetExpress(expressCompanyName).Kuaidi100Code; string str = string.Format("http://www.kuaidi100.com/query?type={0}&postid={1}", kuaidi100Code, shipOrderNumber); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(str); httpWebRequest.Timeout = 8000; ExpressData expressDatum = new ExpressData(); try { HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { expressDatum.Message = "网络错误"; } else { Stream responseStream = response.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.GetEncoding("UTF-8")); StringBuilder stringBuilder = new StringBuilder(streamReader.ReadToEnd()); stringBuilder.Replace("&", "").Replace(" ", "").Replace("&", ""); JObject jObjects = JObject.Parse(stringBuilder.ToString()); string str1 = "200"; if (jObjects["status"] == null || !(jObjects["status"].ToString() == str1)) { expressDatum.Message = jObjects["message"].ToString(); } else { JArray item = jObjects["data"] as JArray; if (item == null) { throw new ApplicationException("查询源数据格式错误,没有找到data节点"); } List <ExpressDataItem> expressDataItems = new List <ExpressDataItem>(); foreach (JToken jTokens in item) { if (jTokens["time"] == null) { throw new ApplicationException("查询源数据格式错误,没有找到time节点"); } if (jTokens["context"] == null) { throw new ApplicationException("查询源数据格式错误,没有找到context节点"); } ExpressDataItem expressDataItem = new ExpressDataItem() { Time = DateTime.ParseExact(jTokens["time"].ToString(), "yyyy-MM-dd HH:mm:ss", null), Content = jTokens["context"].ToString() }; expressDataItems.Add(expressDataItem); } expressDatum.Success = true; expressDatum.ExpressDataItems = expressDataItems; } } } catch (Exception exception) { Log.Error(string.Format("快递查询错误:{{kuaidi100Code:{0},shipOrderNumber:{1}}}", kuaidi100Code, shipOrderNumber), exception); expressDatum.Message = "未知错误"; } return(expressDatum); }
public ExpressData GetExpressDataSF(string logisticsCode) { //https://qiao.sf-express.com/pages/developDoc/index.html?level2=296618&level3=902583&level4=893568 var settting = SiteSettingApplication.SiteSettings; //查询请求XML报文 string xml = string.Format( "<Request service='RouteService' lang='zh-CN'>" + "<Head>{0}</Head>" + "<Body>" + "<RouteRequest tracking_type = '1' method_type = '1' tracking_number = '{1}'/>" + "</Body>" + "</Request>", settting.SFKuaidiCustomerCode, logisticsCode); string Checkword = settting.SFKuaidiCheckWord; //开发者账号对应的校验码; // "j8DzkIFgmlomPt0aLuwU"; string verifyCode = MD5ToBase64String(xml + Checkword); //生成接口校验码 string requestUrl = "http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService"; //测试、生产环境同一个地址 string result = DoPostSF(requestUrl, xml, verifyCode); //返回结果XML bool isSuccess = false; ExpressData data = new ExpressData(); var itemList = new List <ExpressDataItem>(); //解析返回结果 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(result); var headNode = xmlDoc.SelectSingleNode("/Response/Head"); if (headNode != null) { if (headNode.InnerText.ToLower() == "ok") { isSuccess = true; } else {//错误记录日志 var errNode = xmlDoc.SelectSingleNode("/Response/ERROR"); if (errNode != null) { data.Message = errNode.InnerText; } } } if (isSuccess) { var routeNodes = xmlDoc.SelectNodes("/Response/Body/RouteResponse/Route"); DateTime dt = new DateTime(); string address = string.Empty; foreach (XmlNode route in routeNodes) { ExpressDataItem item = new ExpressDataItem(); if (DateTime.TryParse(route.Attributes["accept_time"].Value, out dt)) { item.Time = dt; } if (route.Attributes["accept_address"] != null) {//accept_address 可能没有 address = route.Attributes["accept_address"].Value; } item.Content = address + " " + route.Attributes["remark"].Value; itemList.Add(item); } } data.ExpressDataItems = itemList; data.Success = isSuccess; return(data); /* * <Response service="RouteService"> * <Head>OK</Head> * <Body> * <RouteResponse mailno="444003077898"> * <Route accept_time="2015-01-04 10:11:26" accept_address="深圳" remark="已收件" opcode="50"/> * <Route accept_time="2015-01-05 17:41:50" remark="此件签单返还的单号为 123638813180" opcode="922"/> * <RouteResponse mailno="444003077899"> * <Route accept_time="2015-01-04 10:11:26" accept_address="深圳" remark="已收件" opcode="50"/> * <Route accept_time="2015-01-05 17:41:50" remark="此件签单返还的单号为 123638813181" opcode="922"/> * </RouteResponse> * </Body> * </Response> * //失败 * <Response service=”RouteService”> * <Head>ERR</Head> * <ERROR code="4001">系统发生数据错误或运行时异常</ERROR> * </Response> */ }