频道栏目
首页 > 资讯 > 使用技巧 > 正文

微信开发 之 接受信息与回复信息

16-01-16        来源:[db:作者]  
收藏   我要投稿

  在第一步中  我们配置好了服务器,然后当我们的公众号的使用用户发送信息时,就会把信息发送到服务器中,然后我们在服务器中创建个页面接受发送到的信息,再根据用户发送到的信息回复我们想要给用户回复的信息就好。

  用户发送过来的信息格式为

  其中 MsgType 是用户发送过来的信息的类型 有文本,图片,语音之类的。

  创建个一般处理程序接受发过来的信息,代码如下

  

  public void ProcessRequest(HttpContext context)
        {
            string postString = string.Empty;
            if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
            {
                string weixin = "";//获取xml数据
                weixin = PostInput();//自定义方法,获取xml数据
                LogHelper.LogHelper.WriteLog(typeof(_Default), "收到信息:" + weixin);

                if (!string.IsNullOrEmpty(weixin))
                {
                    ResponseMsg(weixin, context);//根据获取的内容,自动回复一定的内容。
                }
            }
            context.Response.ContentType = "text/plain";

        }
        private string PostInput()/// 获取post请求数据
        {
            Stream s = System.Web.HttpContext.Current.Request.InputStream;
            byte[] b = new byte[s.Length];
            s.Read(b, 0, (int)s.Length);
            return Encoding.UTF8.GetString(b);
        }

 LogHelper类是我创建的日志类,用的是log4net,大家可以看我的另一篇博文

  http://www.cnblogs.com/mchuang/p/5075106.html

   ResponseMsg方法根据获取的内容,自动回复一定的内容。
  private void ResponseMsg(string weixin, HttpContext context)// 服务器响应微信请求
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(weixin);//读取xml字符串
            XmlElement root = doc.DocumentElement;
            XmlNode MsgType = root.SelectSingleNode("MsgType");//获取收到的消息类型。文本(text),图片(image),语音等。
            string messageType = MsgType.InnerText;
            try
            {
                switch (messageType)
                {
                    case "text":
                        context.Response.Write(GetResponseMessage(weixin));
                        break;
                    case "image":

                        break;
                    case "voice":
                        break;
                    case "vedio":
                        break;
                    case "location":
                        break;
                    case "link":
                        break;
                    case "event":
                        context.Response.Write(GetLoction(weixin));
                        break;
                    default:
                        break;
                }
            }
            catch (Exception)
            {
            }
        }

  这里根据类型进行回复,回复的格式可以在公众平台上看到

  




12345678


  然后我们就拼接成这个格式,发送回去就可以了

  

  public static string GetResponseMessage(string weixin)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(weixin);//读取xml字符串
            XmlElement root = doc.DocumentElement;
            string message = "对不起,无法识别您发送的命令。请发送“帮助”来获取已经实现的功能。";
            string resxml = "";
            var model = new
            {
                ToUserName = root.SelectSingleNode("ToUserName").InnerText,//本公众账号
                FromUserName = root.SelectSingleNode("FromUserName").InnerText,//用户
                CreateTime = root.SelectSingleNode("CreateTime").InnerText,//创建时间
                Content = root.SelectSingleNode("Content").InnerText,//消息内容
                MsgId = root.SelectSingleNode("MsgId").InnerText//消息ID,64位整型
            };//获取xml数据里各个结点的内容。
            resxml += "

 

  

 
相关TAG标签
上一篇:微信JS-SDK 配置(扫一扫 / 自定义分享简介..)
下一篇:Arduino +微信公众号 物联网平台
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站