c#中如何处理微信消息和应答

  介绍

这篇文章主要介绍c#中如何处理微信消息和应答,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强> 1,微信的消息应答交互

我们知道,微信的服务器架起了客户手机和开发者服务器的一个桥梁,通过消息的传递和响应,实现了与用户的交互操作,下面是它的消息流程图。

 C #中如何处理微信消息和应答

微信向开发者服务器请求的消息包含了多种类型,不过基本来说,分为了文本消息处理,事件消息处理,语音消息的识别,以及成为开发者之前的那个消息认证操作基本分类、下面是我绘制的一个消息分类图,其中介绍了这几种关系,以及各自的消息细化分类。

 C #中如何处理微信消息和应答

对于这些消息的请求,我们在开发服务器端,需要编写相关的逻辑进行对应给的处理,然后给微信服务器平台回应消息即可。

在前一篇的随笔里面我贴过代码,介绍微信消息处理的入口操作,代码如下所示。

,, 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内容,作为响应。

具体的代码处理逻辑如下图所示。

 C #中如何处理微信消息和应答

这个消息处理接口,其实就是定义好一系列的对请求消息的处理操作,参数是不同给的消息对象,具体的代码定义如下所示(由于篇幅原因,省略部分接口,具体可以参考上图)。

,,///, & 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 信息);      ..............................   null

c#中如何处理微信消息和应答