示例#1
0
        /// <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);                //回复消息
            }
        }
示例#2
0
        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();
        }
示例#3
0
        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);
        }