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
}