介绍
这篇文章主要介绍c#中如何处理微信消息和应答,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强> 1,微信的消息应答交互强>
我们知道,微信的服务器架起了客户手机和开发者服务器的一个桥梁,通过消息的传递和响应,实现了与用户的交互操作,下面是它的消息流程图。
微信向开发者服务器请求的消息包含了多种类型,不过基本来说,分为了文本消息处理,事件消息处理,语音消息的识别,以及成为开发者之前的那个消息认证操作基本分类、下面是我绘制的一个消息分类图,其中介绍了这几种关系,以及各自的消息细化分类。
对于这些消息的请求,我们在开发服务器端,需要编写相关的逻辑进行对应给的处理,然后给微信服务器平台回应消息即可。
在前一篇的随笔里面我贴过代码,介绍微信消息处理的入口操作,代码如下所示。
,, public void ProcessRequest (HttpContext 上下文) {才能 ,,//WHC.Framework.Commons.LogTextHelper.Info(“测试记录“); ,,string postString =, string.Empty; ,,if (HttpContext.Current.Request.HttpMethod.ToUpper (),==,“POST") ,,{ ,,,using (Stream Stream =, HttpContext.Current.Request.InputStream) ,,,{ ,,,,Byte [], postBytes =, new 字节(stream.Length); ,,,,stream.Read (postBytes, 0, (Int32) stream.Length); ,,,,postString =, Encoding.UTF8.GetString (postBytes); ,,,} ,,,if (! string.IsNullOrEmpty (postString)) ,,,{ ,,,,执行(postString); ,,,} ,,} 其他的,, ,,{ ,,,身份验证(); ,,} 以前,,}>其中的执行(postString);就是对消息的处理函数,它实现了对不同消息的分发处理过程。
,,,,///, & lt; summary> ,,,///,处理各种请求信息并应答(通过帖子的请求) ,,,///,& lt;/summary> ,,,///,& lt; param name=皃ostStr"在发布方式提交的数据& lt;/param> ,,,private void 执行(string postStr) ,,,{ ,,,,,WeixinApiDispatch dispatch =, new WeixinApiDispatch (); ,,,,,string responseContent =, dispatch.Execute (postStr); ,,,,,HttpContext.Current.Response.ContentEncoding =, Encoding.UTF8; ,,,,,HttpContext.Current.Response.Write (responseContent); ,,,}里面的WeixinApiDispatch就是一个分发的管理类,它提取请求消息的内容,并构建不同类型的消息参数,传递给不同的响应函数进行处理,然后返回封装好的XML内容,作为响应。
具体的代码处理逻辑如下图所示。
这个消息处理接口,其实就是定义好一系列的对请求消息的处理操作,参数是不同给的消息对象,具体的代码定义如下所示(由于篇幅原因,省略部分接口,具体可以参考上图)。
,,///, & lt; summary>///才能,客户端请求的数据接口///才能,& lt;/summary> public 才能;interface  IWeixinAction {才能 ,,,///,& lt; summary> ,,,///,对文本请求信息进行处理 ,,,///,& lt;/summary> ,,,///,& lt; param name=癷nfo"在文本信息实体& lt;/param> ,,,///,& lt; returns> & lt;/returns> ,,,string HandleText (RequestText 信息); ,,,///,& lt; summary> ,,,///,对图片请求信息进行处理 ,,,///,& lt;/summary> ,,,///,& lt; param name=癷nfo"在图片信息实体& lt;/param> ,,,///,& lt; returns> & lt;/returns> ,,,string HandleImage (RequestImage 信息); ........................... ,,,///,& lt; summary> ,,,///,对订阅请求事件进行处理 ,,,///,& lt;/summary> ,,,///,& lt; param name=癷nfo"在订阅请求事件信息实体& lt;/param> ,,,///,& lt; returns> & lt;/returns> ,,,string HandleEventSubscribe (RequestEventSubscribe 信息); ,,,///,& lt; summary> ,,,///,对菜单单击请求事件进行处理 ,,,///,& lt;/summary> ,,,///,& lt; param name=癷nfo"在菜单单击请求事件信息实体& lt;/param> ,,,///,& lt; returns> & lt;/returns> ,,,string HandleEventClick (RequestEventClick 信息); .............................. nullc#中如何处理微信消息和应答