using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web.Script.Serialization; using NetLibrary.Log; namespace NetLibrary.Express { public class CNE { public string url { get; set; } /// /// 授权码 /// public string authenticate { get; set; } JavaScriptSerializer JsonConvert = null; public CNE() { JsonConvert = new JavaScriptSerializer(); } #region 发货 public string SendGoods(string postmessage, out string ErrorMessage) { try { string url = "http://api.cnexps.com/cgi-bin/EmsData.dll?DoApi"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ReadWriteTimeout = 30 * 1000; ///添加参数 //Dictionary dicList = new Dictionary(); //dicList.Add("UserName", "test@qq.com"); //dicList.Add("Password", "000000"); //String postStr = buildQueryStr(dicList); byte[] data = Encoding.UTF8.GetBytes(postmessage); request.ContentLength = postmessage.Length; Stream myRequestStream = request.GetRequestStream(); myRequestStream.Write(data, 0, data.Length); myRequestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); var retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); ErrorMessage = ""; return retString; } catch (Exception ex) { ErrorMessage = ex.Message; return ""; } } #endregion #region 发货 public string SendGoods2(CNE_Order model, out string ErrorMessage) { try { string url = "http://api.cnexps.com/cgi-bin/EmsData.dll?DoApi"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ReadWriteTimeout = 30 * 1000; string postmessage = JsonConvert.Serialize(model); byte[] data = Encoding.UTF8.GetBytes(postmessage); request.ContentLength = data.Length; Stream myRequestStream = request.GetRequestStream(); myRequestStream.Write(data, 0, data.Length); myRequestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); var retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); CNE_Result model2 = JsonConvert.Deserialize(retString); ErrorMessage = ""; if (Convert.ToInt32(model2.ReturnValue) >0&&model2.OK=="1") return model2.ErrList[0].cNum; else { ErrorMessage = model2.ErrList[0].cMess; return ""; } return retString; } catch (Exception ex) { ErrorMessage = ex.Message; return ""; } } #endregion #region 标签 public string GetLabel(string UserCode, string TrackCode,string sign, out string ErrorMessage) { try { string url = "http://label.cnexps.com/CnePrint?icID=" + UserCode + "&cNums=" + TrackCode + "&ptemp=label10x10_1&signature="+sign; HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ReadWriteTimeout = 30 * 1000; ErrorMessage = ""; //string postmessage = JsonConvert.Serialize(model); //byte[] data = Encoding.UTF8.GetBytes(postmessage); //request.ContentLength = data.Length; //Stream myRequestStream = request.GetRequestStream(); //myRequestStream.Write(data, 0, data.Length); //myRequestStream.Close(); HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); Stream myResponseStream = myResponse.GetResponseStream(); StreamReader reader = new StreamReader(myResponseStream, Encoding.UTF8); string dir = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies"; if (System.IO.Directory.Exists(dir) == false) System.IO.Directory.CreateDirectory(dir); string fname = Guid.NewGuid().ToString() + ".pdf"; string filePath = dir + "/" + fname; using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { int size = 2048; byte[] data = new byte[2048]; while (true) { size = myResponseStream.Read(data, 0, data.Length); if (size > 0) { fileStream.Write(data, 0, size); } else { break; } } } reader.Close(); myResponseStream.Close(); myRequest.Abort(); myResponse.Close(); return fname; } catch (Exception ex) { ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message); ErrorMessage = ex.Message; } return ""; } #endregion } #region 订单 public class CNE_Order { // {"RequestName":"PreInputSet","icID":71,"TimeStamp":1410809251087,"MD5":"570a2c867c40501d4eeb519f1e63ac81","RecList":[{"iID":0,"nItemType":1,"cRNo":"sunvary40564","cDes":"United States","fWeight":0.000,"cReceiver":"Lorna Holewinski","cRPhone":"715-741-0323","cREMail":"","cRPostcode":"54494","cRCountry":"United States","cRProvince":"","cRCity":"","cRAddr":"7920 Pine Haven Court Wisconsin Rapids, WI 54494","GoodsList":[{"cxGoods":"衣服","ixQuantity":1,"fxPrice":26.00,"cxGoodsA":"clothes","cxGoodsB":"SKU012345679"}]}],"cEmsKind":"CNE全球速达" } public string RequestName { get; set; } public string icID { get; set; } public string TimeStamp { get; set; } public string MD5 { get; set; } public List RecList { get; set; } } #endregion #region 物品信息 public class CNE_Goods { /// /// 名称 /// public string cxGoods { get; set; } /// /// 英文名称 /// public string cxGoodsA { get; set; } /// ///件数,必填 /// public int ixQuantity { get; set; } /// /// 申报价值 /// public decimal fxPrice { get; set; } public string cxGCodeA { get; set; } } #endregion #region 收件人信息 public class CNE_Reve { /// /// 名称 /// public string iID { get; set; } /// ///件数,必填 /// public Int32 nItemType { get; set; } /// /// 申报价值 /// public string cRNo { get; set; } public string cDes { get; set; } public string cEmsKind { get; set; } public Decimal fWeight { get; set; } public string cReceiver { get; set; } public string cRPhone { get; set; } public string cREMail { get; set; } public string cRPostcode { get; set; } public string cRCountry { get; set; } public string cRProvince { get; set; } public string cRCity { get; set; } public string cRAddr { get; set; } public List GoodsList { get; set; } // iID":0,"nItemType":1,"cRNo":"sunvary40564","cDes":"United States","fWeight":0.000,"cReceiver":"Lorna Holewinski","cRPhone":"715-741-0323","cREMail":"","cRPostcode":"54494","cRCountry":"United States","cRProvince":"","cRCity":"","cRAddr":"7920 Pine Haven Court Wisconsin Rapids, WI 54494", } #endregion #region 返回信息 public class CNE_Result { public string ReturnValue { get; set; } public string OK { get; set; } public List ErrList { get; set; } } #endregion #region 返回信息 public class CNE_ErrMess { public string iIndex { get; set; } public string iID { get; set; } public string cNum { get; set; } public string cMess { get; set; } } #endregion }