后台接口请求方法:
void TestMerchant()
{string m_QuestURL = "http://localhost:6154/FlightInterAPI.Web/Merchant/FlightInterModifyMerchant.ashx";//请求地址
//Post请求地址
MerchantModifyRequest req = new MerchantModifyRequest();
req.Content = new MerchantModifyReqContentType();
req.Content.BeginTime = DateTime.Now;
req.Content.EndTime = DateTime.Now;
req.Content.Code = "保留字段";
req.Content.Flag = 1;
req.Content.LinkMan = "Test";
req.Content.Mail= "test@tm.net";
req.Content.Mobile = "138123";
req.Content.Name = "无锡中旅";
req.Content.QQ = "66558855";
req.Content.Tel = "12323";
req.Content.MerchantAir = new MerchantAirType[1];
req.Content.MerchantAir[0] = new MerchantAirType();
req.Content.MerchantAir[0].AirCode = "CA";
req.Content.MerchantAir[0].AirCompanyId = 0;
req.Content.MerchantAir[0].AgencyFee = 0.2M;
req.Content.MerchantAir[0].BillFee = 20;
req.Content.MerchantAir[0].Rebeat = 0.3M;
req.Content.MerchantAir[0].Reward = 0.4M;
req.Header = new HeadType();
req.Header.Resp = new RespType();
req.Header.Resp.RespCode = "0";
req.Header.Resp.RespDesc = "";
//AVResponse response = FlightInterAPI.Business.Query.FlightService.QueryOneWay(quest);
HttpWebRequest m_Request = (HttpWebRequest)WebRequest.Create(m_QuestURL);
string requestXml = Serializer.ObjectToXML<MerchantModifyRequest>(req);//将实体序列化为xml字符串
//相应请求的参数
byte[] data = Encoding.UTF8.GetBytes(requestXml);
m_Request.Method = "Post";
m_Request.ContentType = "application/x-www-form-urlencoded";
m_Request.ContentLength = data.Length;
//请求流
Stream requestStream = m_Request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
//响应流
HttpWebResponse m_Response = (HttpWebResponse)m_Request.GetResponse();
Stream responseStream = m_Response.GetResponseStream();
StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);
//获取返回的信息
string result = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
Response.Write(result);
return;
}
易出错的地方:小数、时间(当前时间)带了一些本地时间格式
#region 格式化时间类型
/// <summary>
/// 格式化时间类型
/// </summary>
/// <param name="dTime"></param>
/// <returns></returns>
public static DateTime FormatDate(DateTime dTime)
{
return DateTime.Parse(dTime.ToString("yyyy-MM-dd HH:mm:ss"));
}
#endregion
格式化一下时间就没问题了。
响应方法:
public class FlightInterModifyMerchant : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
MerchantModifyResponse resp = new MerchantModifyResponse();
resp.Header = new FlightInterAPI.Model.HeadType();
resp.Header.Resp = new FlightInterAPI.Model.RespType();
resp.Header.Resp.RespCode = "0";//成功
resp.Content = new MerchantModifyRespContentType();
StreamReader str = new StreamReader(HttpContext.Current.Request.InputStream, System.Text.Encoding.GetEncoding("utf-8"));
//获取返回的信息
string requestXml = HttpUtility.UrlDecode(str.ReadToEnd());
if (string.IsNullOrEmpty(requestXml))
{
resp.Header.Resp.RespCode = "1";
resp.Header.Resp.RespDesc = "请求参数为空异常";
resp.Content.MerchantId = 0;
}
else
{
MerchantModifyRequest req = FlightInterAPI.Common.Serializer.XMLToObject<MerchantModifyRequest>(requestXml);//根据xml反序列化为请求实体
resp = MerchantService.ModifyInfo(req);//调用后台处理方法处理,返回响应实体
}
context.Response.Write(FlightInterAPI.Common.Serializer.ObjectToXML<MerchantModifyResponse>(resp));
}
public bool IsReusable {
get {
return false;
}
}
}