http.post方法传递数据
//接收数据
Request.Form["data"]
//处理接收的数据
private void UpdateInfoAction(string lc, string Data, LogistiCorpObject logistiCorpObject, string checkId)
{
try
{
//状态处理
var updateInfo = (UpdateInfo)XmlUtil.Deserialize(typeof(UpdateInfo), lcData);
if (updateInfo == null)
{
//xml解析错误
string backValue = XmlHelper.Result(lc, "false", null, "S1");
FeedBack(backValue, checkId);
Response.Write(backValue); return;
}
if (updateInfo.OrderStates != null && updateInfo.OrderStates.Length > 50)
{
//xml内容非法:数据量过大
string backValue = XmlHelper.Result(lc, "false", null, "S5");
FeedBack(backValue, checkId);
Response.Write(backValue); return;
}
//数据检查
if(!XmlHelper.CheckUpdate(updateInfo,logistiCorpObject))
{
string backValue = XmlHelper.Result(lc, "false", null, "S5");
FeedBack(backValue, checkId);
Response.Write(backValue); return;
}
//业务处理
IOrderThirdParty iThirdParty =
(IOrderThirdParty)ServiceProxyFactory.Create<IOrderThirdParty>("OrderThirdParty");
LogistiCorpRalationObject[] ralation = CompanyUtil.LogistiCorpRalationArray(logistiCorpObject.LogisticProviderID);
List<BackValueObject> list = iThirdParty.UpdateLcOrder(updateInfo, logistiCorpObject,ralation);
//返回结果XML处理
if (list != null && list.Count > 0)
{
string backValue = XmlHelper.Result(lc, "false", list, null);
FeedBack(backValue, checkId);
Response.Write(backValue); return;
}
else
{
string backValue = XmlHelper.Result(lc, "true", null, null);
FeedBack(backValue, checkId);
Response.Write(backValue); return;
}
}
catch (Exception e)
{
Log.Error("Client", "UpdateInfoAction" + lc + lcData, e);
}
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="type">类型</param>
/// <param name="xml">XML字符串</param>
/// <returns></returns>
public static object Deserialize(Type type, string xml)
{
try
{
using (StringReader sr = new StringReader(xml))
{
XmlSerializer xmldes = new XmlSerializer(type);
return xmldes.Deserialize(sr);
}
}
catch (Exception e)
{
log.Error("序列化失败",e);
return null;
}
}
//类型
public class UpdateInfo
{
[DataMember]
public string LogisticProviderID;
[DataMember]
public OrderState[] OrderStates;
}
//回写数据
Response.Write(backValue); return;
//发送数据
//组建XML数据
/// <summary>
/// 订单xml
/// </summary>
/// <param name="drOrders"></param>
/// <param name="drDetail"></param>
/// <param name="lc"></param>
/// <returns></returns>
public static string GetOrders(DataRow drOrders, DataRow[] drDetail, string lc)
{
if (drOrders == null) return null;
StringBuilder sb = new StringBuilder();
sb.Append("<Orders>");
sb.Append("<Order>");
sb.Append("<LogisticProviderID>" + lc + "</LogisticProviderID>");
sb.Append("<FormCode>" + drOrders["FormCode"].ToString() + "</FormCode>");
sb.Append("<OrderType>" + "T"+drOrders["ReplaceType"].ToString() + "</OrderType>");
sb.Append("<UserName>" + HttpUtility.HtmlEncode(drOrders["Addressee"].ToString()) + "</UserName>");
sb.Append("<MobilePhone>" + drOrders["MobilePhone"].ToString() + "</MobilePhone>");
sb.Append("<PostalCode>" + drOrders["PostalCode"].ToString() + "</PostalCode>");
sb.Append("<Province>" + drOrders["Province"].ToString() + "</Province>");
sb.Append("<City>" + drOrders["City"].ToString() + "</City>");
sb.Append("<Area>" + drOrders["Area"].ToString() + "</Area>");
sb.Append("<Address>" + HttpUtility.HtmlEncode(drOrders["Address"].ToString()) + "</Address>");
sb.Append("<CallBefore>" + drOrders["CallBefore"].ToString() + "</CallBefore>");
sb.Append("<OutTime>" + ((DateTime)drOrders["CreateTime"]).ToString("yyyy-MM-dd HH:mm:ss") + "</OutTime>");
sb.Append("<NeedFund>" + drOrders["NeedFund"].ToString() + "</NeedFund>");
sb.Append("<BackFund>" + drOrders["BackFund"].ToString() + "</BackFund>");
sb.Append("<Remark>" + drOrders["ReceiveTime"].ToString() + "</Remark>");
sb.Append("<WareHouseName>" + drOrders["WareHouseName"] + "</WareHouseName>");
sb.Append("<PaymentType>" + drOrders["CashonDeliveryTypeName"] + "</PaymentType>");
if (drDetail != null && drDetail.Length > 0)
{
sb.Append("<Items>");
foreach (DataRow row in drDetail)
{
sb.Append("<Item>");
sb.Append("<ProductCode>" + row["ProductCode"].ToString() + "</ProductCode>");
sb.Append("<ProductName>" + HttpUtility.HtmlEncode(row["ProductName"].ToString()) + "</ProductName>");
sb.Append("<OrderAmount>" + row["OrderAmount"].ToString() + "</OrderAmount>");
sb.Append("<SellPrice>" + row["SellPrice"].ToString() + "</SellPrice>");
sb.Append("<Size>" + HttpUtility.HtmlEncode(row["Size"].ToString()) + "</Size>");
sb.Append("</Item>");
}
sb.Append("</Items>");
}
else
{
return null;
}
sb.Append("</Order>");
sb.Append("</Orders>");
return sb.ToString();
}
//post数据 不响应
public static bool HttpPost(string lc, string xmlString, string signXml, string pInfo)
{
WebRequest req = WebRequest.Create(pInfo);
//xmlString = Security.SecurityUtil.EncodeBase64("UTF-8", xmlString);
string xmlValue = HttpUtility.UrlEncode(xmlString, Encoding.UTF8);
string signValue = HttpUtility.UrlEncode(signXml, Encoding.UTF8);
byte[] bytes = Encoding.ASCII.GetBytes("lc=" + lc + "&lcdata=" + xmlValue + "&sdata=" + signValue);
req.Headers.Add("Accept-Encoding:gzip, deflate");
req.Headers.Add("Accept-Language:zh-cn,en-us");
req.Timeout = 10000;
req.Method = "post";
req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
req.ContentLength = bytes.Length;
Stream os = null;
try
{
os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
}
catch (Exception e)
{
Log.Error("Post","Post数据传输失败"+xmlString,e);
return false;
}
finally
{
req.GetResponse().Close();
if(os!=null)
{
os.Close();
}
}
return true;
}
/// <summary>
/// 发送后响应
/// </summary>
/// <param name="request">发送请求对象</param>
/// <param name="encoding">收到响应后解码方式</param>
public static void WebResponse(HttpWebRequest request, Encoding encoding)
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
string strResponse = reader.ReadToEnd();
reader.Close();
response.Close();
System.Web.HttpContext.Current.Response.Write(strResponse);
}
浙公网安备 33010602011771号