当前位置:编程学习 > C#/ASP.NET >>

微信接口自动回复信息代码问题,就80分了

  try
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(weixinXML);//读取XML字符串
            XmlElement rootElement = doc.DocumentElement;

            XmlNode MsgType = rootElement.SelectSingleNode("MsgType");//获取字符串中的消息类型

            string resxml = "";
            if (MsgType.InnerText == "text")//如果消息类型为文本消息
            {
                var model = new
                {
                    ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
                    FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
                    CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
                    MsgType = MsgType.InnerText,
                    Content = rootElement.SelectSingleNode("Content").InnerText,
                    MsgId = rootElement.SelectSingleNode("MsgId").InnerText
                };
                resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";
                if (!string.IsNullOrEmpty(model.Content))//如果接收到消息
                {
                    if (model.Content.Contains(" 你好") || model.Content.Contains(" 好") || model.Content.Contains("hi") || model.Content.Contains("hello"))// 你好
                    {
                              resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您的光临!]]></Title><Description><![CDATA[非常感谢您的关注!]]></Description><PicUrl><![CDATA[http://...jpg]]></PicUrl><Url><![CDATA[http://www.baidu.com/]]></Url></item></Articles><FuncFlag>0</FuncFlag></xml>";
                    }

                 }

                 else//没有接收到消息
                {
                    resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[亲,感谢您对我的关注,有事请留言。]]></Content><FuncFlag>0</FuncFlag></xml>";
                }

                Response.Write(resxml);
            }
            else//如果是其余的消息类型
            {
                var model = new
                {
                    ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
                    FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
                    CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
                };
            resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[亲,感谢您对我的关注,有事请留言。]]></Content><FuncFlag>0</FuncFlag></xml>";
                Response.Write(resxml);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        Response.End();


这里面的
   var model = new
                {
                    ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
                    FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
                    CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
                };
这部分,有点看不懂,总报错,应该怎么修改下呢?
还有
<Url><![CDATA[http://www.baidu.com/]]></Url>
这里面添加链接,我想在链接后面加上?id=FromUserName,这个FromUserName是获取的,应该怎么写呢?求高手 --------------------编程问答-------------------- 先把说明文档仔细看一遍;
1.用户发消息给微信服务器》2.微信服务器收到用户消息》3.微信服务器把消息发给你》4.你解析消息》5.返回给微信服务器》6.微信服务器发消息给用户

微信服务器发过来的消息是xml格式的
1.当微信发过来xml,ToUserName就是代表你的微信号(微信要知道消息发送给谁),fromuser就是代表发送消息的人(这也是代表唯一微信用户的openid:微信标明消息来自哪个用户); 你在处理后xml后返回的给微信服务器,这个时候的ToUserName 要指定为发消息的用户了(因为微信必须知道你要将你的消息要发给谁),那么fromuser就是指定成你自己的微信号...

--------------------编程问答--------------------



        /// <summary>
        /// 处理文本消息
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        private static string DoTextMsg(XmlDocument xml)
        {
            //微信服务器发过来xml
            //TODO 取出内容
            string touser = xml.SelectSingleNode("xml/ToUserName").InnerText;
            string fromuser = xml.SelectSingleNode("xml/FromUserName").InnerText;

            //下面就是如何处理xml
            xml.SelectSingleNode("xml/ToUserName").InnerText = fromuser;//设置接受消息的用户
            xml.SelectSingleNode("xml/FromUserName").InnerText = touser;//消息来自谁
            xml.SelectSingleNode("xml/Content").InnerText = "这是回复的内容";//这里是你回复的内容,字符串的怎么写都可以

            return xml.OuterXml;//以字符串形式返回
        }
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,