/// <summary> /// 接收微信发送的XML消息并且解析 /// </summary> private void ReceiveXml() { Stream requestStream = System.Web.HttpContext.Current.Request.InputStream; byte[] requestByte = new byte[requestStream.Length]; requestStream.Read(requestByte, 0, (int)requestStream.Length); string requestStr = Encoding.UTF8.GetString(requestByte); if (!string.IsNullOrEmpty(requestStr)) { //封装请求类 XmlDocument requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); XmlElement rootElement = requestDocXml.DocumentElement; Model.Event.WxXmlModel WxXmlModel = new Model.Event.WxXmlModel(); WxXmlModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; WxXmlModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; WxXmlModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; WxXmlModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText; switch (WxXmlModel.MsgType) { case "text": //文本 WxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image": //图片 WxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event": //事件 WxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; //if (WxXmlModel.Event == "subscribe")//用户未关注时,进行关注后的事件推送 //{ // WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; //}else if (WxXmlModel.Event == "scan")//用户已关注时的事件推送 //{ // WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; //} break; default: break; } ResponseXML(WxXmlModel); //回复消息 } }
private void ResponseXML(Model.Event.WxXmlModel WxXmlModel) { string XML = ""; switch (WxXmlModel.MsgType) { case "text": //文本回复 XML = BLL.Event.ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); break; case "event": //时间推送 XML = BLL.Event.ResponseMessage.GetEvent(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel); break; default: //默认回复 break; } HttpContext.Current.Response.Write(XML); HttpContext.Current.Response.End(); }
public static string GetEvent(string FromUserName, string ToUserName, Model.Event.WxXmlModel wxmodel) { WriteTxt(wxmodel.EventKey); //接收的文本消息 string XML = ""; switch (wxmodel.Event) { case "subscribe": //用户未关注 XML = ReArticle(FromUserName, ToUserName, "扫码用户未关注", "测试详情——扫马用户未关注", "http://wx.bzq1688.com/mobile/img/perImg.png", "http://www.baidu.com"); break; case "SCAN": XML = ReArticle(FromUserName, ToUserName, "扫码用户已关注", "测试详情——扫马用户已关注", "http://wx.bzq1688.com/mobile/img/perImg.png", "http://www.baidu.com"); break; default: XML = ReText(FromUserName, ToUserName, "无对应关键字"); break; } return(XML); }