/// <summary> /// SimDataLimiHandler 的摘要说明 推送 /// </summary> public class SimDataLimiHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //context.Response.Write("Hello World"); try { if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST") { using (Stream stream = HttpContext.Current.Request.InputStream) { //Byte[] postBytes = new Byte[stream.Length]; //stream.Read(postBytes, 0, (Int32)stream.Length); //string postString = Encoding.UTF8.GetString(postBytes); try { StreamReader reader = new StreamReader(stream); string jsonStr = reader.ReadToEnd(); jsonStr = System.Web.HttpUtility.UrlDecode(jsonStr);//url解码 SortedList prams = Param(jsonStr); for (int i = 0; i < prams.Count; i++) { Log4netHelper.Debug("解析", "参数 " + prams.GetKey(i) + " 值" + prams.GetByIndex(i)); } //声明一个XMLDoc文档对象,LOAD()xml字符串 XmlDocument doc = new XmlDocument(); doc.LoadXml(prams.GetByIndex(0).ToString()); //得到XML文档根节点 XmlElement root = doc.DocumentElement; XmlNodeList list = root.ChildNodes; foreach (XmlNode xno in list) { Console.WriteLine(" 参数 " + xno.Name + " 值" + xno.InnerText); } } catch (Exception ex) { Log4netHelper.Error("SimDataLimiHandler 数据解析出错", "接收推送", ex); } } } } catch (Exception ex) { string eventId = context.Request.Form["eventId"]; string data = context.Request.Form["data"]; Log4netHelper.Error("SimDataLimiHandler联通推送调用出错", "eventId:" + eventId + "data:" + data, ex); } } private SortedList Param(string POSTStr) { SortedList SortList = new SortedList(); int index = POSTStr.IndexOf("&"); string[] Arr = { }; if (index != -1) //参数传递不只一项 { Arr = POSTStr.Split('&'); for (int i = 0; i < Arr.Length; i++) { int equalindex = Arr[i].IndexOf('='); string paramN = Arr[i].Substring(0, equalindex); string paramV = Arr[i].Substring(equalindex + 1); if (!SortList.ContainsKey(paramN)) //避免用户传递相同参数 { SortList.Add(paramN, paramV); } else //如果有相同的,一直删除取最后一个值为准 { SortList.Remove(paramN); SortList.Add(paramN, paramV); } } } else //参数少于或等于1项 { int equalindex = POSTStr.IndexOf('='); if (equalindex != -1) { //参数是1项 string paramN = POSTStr.Substring(0, equalindex); string paramV = POSTStr.Substring(equalindex + 1); SortList.Add(paramN, paramV); } else //没有传递参数过来 { SortList = null; } } return SortList; } public bool IsReusable { get { return false; } } }