微信开发之体验微信公众平台快速开发框架
凌雪 2018-12-17 来源 :网络 阅读 1343 评论 0

摘要:本文将带你了解微信开发微信快速开发框架(四)-- 体验微信公众平台快速开发框架,希望本文对大家学微信有所帮助。

本文将带你了解微信开发微信快速开发框架(四)-- 体验微信公众平台快速开发框架,希望本文对大家学微信有所帮助。



今天上午想着用那个框架来快速建立一个测试,用着用着,发觉了些bug,赶紧修复了下,目前已经更新到github上。

接下来,我们的快速开发,首先您要建立一个公众账号的测试账号,建立方法参见《建立微信公众平台测试账号》,我在项目中,加入了WebDemo项目,您可以参考以下。


实践一下,这里我用了2个消息处理,一个是DefaultMessageHandler和CnBlogsMessageHandler,一个是默认的消息,在无法处理时返回,CnblogsMessageHandler是一个文本消息处理,您只要回复“博客园”就能看到相应的反馈消息。

先建立2个MessageHandler都继承IMessageHandler:
 

public class DefaultMessageHandler :   IMessageHandler    {        private static string s_defaultMsg =   "对不起,亲,我还无法了解您的需求,我会不断改进的!";          public ResponseMessage HandlerRequestMessage(XElement xml)        {            var fromUserName =   xml.Element("ToUserName").Value;            var toUserName =   xml.Element("FromUserName").Value;            return new   ResponseTextMessage            {                FromUserName =   fromUserName,                ToUserName   = toUserName,                CreateTime   = DateTime.Now.Ticks,                  Content = s_defaultMsg              };        }    }
public   class CnblogsTextMessageHandler : IMessageHandler    {          private static string s_cnblogsMsg =   "HI,博客园的园友,欢迎来到JamesYing的微信世界,请关注我,//inday.cnblogs.com";        public ResponseMessage   HandlerRequestMessage(XElement xml)          {            var request = new   RequestTextMessage(xml);              return new ResponseTextMessage(request)            {                CreateTime =   DateTime.Now.Ticks,                  Content = s_cnblogsMsg              };        }    }

 

后面建立一些规则:

这里我建立了几套规则,先建立了主体规则:

public class WebMessageRole : IMessageRole    {          public IMessageHandler MessageRole(XElement xml)        {            try            {                var msgType = (MsgType)Enum.Parse(typeof(MsgType),   xml.Element("MsgType").Value, true);                return new   MsgTypeMessageRole(msgType).MessageRole(xml);            }            catch            {                return new   DefaultMessageHandler();            }        }      }

MsgTypeMessageRole是一个根据类型处理的规则,与之前Demo不同,我把规则都细分了,这样耦合度减小,可以根据不同需求,在不同规则中修改。

public class MsgTypeMessageRole : IMessageRole    {          private MsgType MsgType { get; set; }        public MsgTypeMessageRole(MsgType   msgType)        {            this.MsgType = msgType;        }        public IMessageHandler   MessageRole(XElement xml)        {            switch (MsgType)            {                case MsgType.Text:                    return new   TextMessageRole().MessageRole(xml);                default:                    return new   DefaultMessageHandler();              }        }      }

这里在判断为Text的时候,返回了另外一个规则,文本消息处理规则TextMessageRole,其余情况下则直接返回一个默认的消息处理DefaultMessageHandler。

public class TextMessageRole : IMessageRole    {          public IMessageHandler MessageRole(XElement xml)        {            var request = new   RequestTextMessage(xml);            if   (request.Content.IndexOf("博客园") > -1)            {                return new   CnblogsTextMessageHandler();              }            return new   DefaultMessageHandler();        }    }

TextMessageRole   是个很简单的规则类,我只是判断在文本内容中是否含有“博客园”三个字,有的话,我直接返回CnblogsTextMessageHandler。

基本的处理都好了,接下来是在微信接口中,进行部署,在web项目中wx.aspx为接口地址。

我的公开测试地址://wx.jamesying.com/wx.aspx

在wx.aspx.cs中,进行一些必要的配置:

public partial class WX : System.Web.UI.Page    {          protected void Page_Load(object sender, EventArgs e)        {            try            {                //微信服务器一直把用户发过来的消息,post过来                if (Request.HttpMethod ==   "POST")                {                    var reader = XmlReader.Create(Request.InputStream);                                        var   doc = XDocument.Load(reader);                      MyLog.Log(doc.ToString());                      var xml = doc.Element("xml");                      //把inputstream转换成xelement后,直接交给WebMessageRole来处理吧                    var responseMessage =  new WebMessageRole()                          .MessageRole(xml)                          .HandlerRequestMessage(xml);                    if (responseMessage !=   null)                    {                          Response.Write(responseMessage.Serializable());#if DEBUG                          MyLog.Log(responseMessage.Serializable());#endif                    }                }                else if (Request.HttpMethod   == "GET") //微信服务器在首次验证时,需要进行一些验证,但。。。。                {                    //我仅需返回给他echostr中的值,就为验证成功,可能微信觉得这些安全策略是为了保障我的服务器,要不要随你吧                      Response.Write(Request["echostr"].ToString());                }            }            catch (Exception ex)            {                MyLog.Log("error:"   + ex.ToString());            }        }      }

至此,一个简单的微信公众平台接口已经配置完成,只要部署到自己的web服务器即可。


    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!


本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved