/// <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; } } }