微信运用热火朝天,许多公司都愿望搭上信息快车,这个是一个商机,也是一个手艺的方向,因而,有空研讨下、进修下微信的相干开辟,也就成为设计的部署事变之一了。本系列文章愿望从一个循规蹈矩的角度上,周全引见微信的相干开辟进程和相干经验总结,愿望给人人相识一下相干的开辟进程。本篇漫笔重要基于上一篇《C#开辟微信流派及运用(1)--开始使用微信接口》的基础上举行深切的引见,引见微信音讯的处置惩罚和应对的进程。
1、微信的音讯应对交互
我们晓得,微信的服务器架起了客户手机和开辟者服务器的一个桥梁,经由过程音讯的通报和相应,完成了与用户的交互操纵,下面是它的音讯流程图。
微信向开辟者服务器要求的音讯包含了多种范例,不过基础来讲,分为了文本音讯处置惩罚、事宜音讯处置惩罚、语音音讯的辨认,以及成为开辟者之前的谁人音讯认证操纵基础分类,下面是我绘制的一个音讯分类图,个中引见了这几种关联,以及各自的音讯细化分类。
关于这些音讯的要求,我们在开辟服务器端,须要编写相干的逻辑举行对应给的处置惩罚,然后给微信服务器平台回应音讯即可。
在前一篇的漫笔内里我贴过代码,引见微信音讯处置惩罚的进口操纵,代码以下所示。
public void ProcessRequest(HttpContext context) { //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 Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); postString = Encoding.UTF8.GetString(postBytes); } if (!string.IsNullOrEmpty(postString)) { Execute(postString); } } else { Auth(); } }
个中的Execute(postString);就是对音讯的处置惩罚函数,它完成了对差别音讯的分发处置惩罚进程。‘
/// <summary> /// 处置惩罚种种要求信息并应对(经由过程POST的要求) /// </summary> /// <param name="postStr">POST体式格局提交的数据</param> private void Execute(string postStr) { WeixinApiDispatch dispatch = new WeixinApiDispatch(); string responseContent = dispatch.Execute(postStr); HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); }
内里的WeixinApiDispatch就是一个分发的治理类,它提取要求音讯的内容,并构建差别范例的音讯参数,通报给差别的相应函数举行处置惩罚,然后返回封装好的XML内容,作为相应。
详细的代码处置惩罚逻辑以下图所示。
这个音讯处置惩罚接口,实在就是定义好一系列的对要求音讯的处置惩罚操纵,参数是差别给的音讯对象,详细的代码定义以下所示(因为篇幅缘由,省略部份接口,详细能够参考上图)。
/// <summary> /// 客户端要求的数据接口 /// </summary> public interface IWeixinAction { /// <summary> /// 对文本要求信息举行处置惩罚 /// </summary> /// <param name="info">文本信息实体</param> /// <returns></returns> string HandleText(RequestText info); /// <summary> /// 对图片要求信息举行处置惩罚 /// </summary> /// <param name="info">图片信息实体</param> /// <returns></returns> string HandleImage(RequestImage info); ........................... /// <summary> /// 对定阅要求事宜举行处置惩罚 /// </summary> /// <param name="info">定阅要求事宜信息实体</param> /// <returns></returns> string HandleEventSubscribe(RequestEventSubscribe info); /// <summary> /// 对菜单单击要求事宜举行处置惩罚 /// </summary> /// <param name="info">菜单单击要求事宜信息实体</param> /// <returns></returns> string HandleEventClick(RequestEventClick info); .............................. }
从上面的代码能够看出,差别的音讯,到处置惩罚函数这里,就以差别的音讯实体类的体式格局通报过来了(注重:实体类是我依据顺序开辟须要自身定义的,非微信自身的实体类),如许异常轻易我们处置惩罚操纵,不然每次须要剖析差别的音讯内容,很轻易出现问题,如许强范例的数据范例,提高了我们开辟微信运用的强健型和高效性。这些实体类的对象有肯定的继续关联的,他们的继续关联以下所示。
2、微信的治理接口
上面的音讯分类是微信服务器向开辟者服务器发送的音讯要求操纵,另有一种音讯,是我们开辟者服务器向微信服务器举行的音讯要求或许相应,这类这里临时称之为微信的治理接口,它表清楚明了我们能够经由过程这些接口举行相干的音讯复兴或许数据治理操纵。它的分类图以下所示。
微信的复兴音讯处置惩罚,它也和上面小节的信息一样,它也是继续自BaseMessage实体类的(一样,下图的实体类及其继续关联也是自定义的,轻易顺序开辟),它的关联以下所示
复兴的音讯,平常用的最多的是文本音讯和图文音讯。
文本音讯的结果以下所示。
图文音讯,能够增添图片,还能够增添细致的链接页面,是异常悦目的一种结果,关于一些内容比较多,愿望展示更好结果的,平常采纳这类,结果以下所示。
以上就是C#开辟微信流派及运用(二)之微信音讯处置惩罚和应对的图文代码教程的细致内容,更多请关注ki4网别的相干文章!