作者:小时候V有时候 | 来源:互联网 | 2017-05-11 01:14
这篇文章主要介绍了c#使用微信接口开发微信门户中的微信消息的处理和应答的过程,需要的朋友可以参考下
微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下、学习下微信的相关开发,也就成为计划的安排事情之一了。本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望给大家了解一下相关的开发历程。本篇随笔主要基于上一篇《c#使用微信接口开发微信门户应用》的基础上进行深入的介绍,介绍微信消息的处理和应答的过程。
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);就是对消息的处理函数,它实现了对不同消息的分发处理过程。
代码如下:
///
/// 处理各种请求信息并应答(通过POST的请求)
///
/// POST方式提交的数据
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内容,作为响应。
具体的代码处理逻辑如下图所示。
///
/// 客户端请求的数据接口
///
public interface IWeixinAction
{
///
/// 对文本请求信息进行处理
///
/// 文本信息实体
///
string HandleText(RequestText info);
///
/// 对图片请求信息进行处理
///
/// 图片信息实体
///
string HandleImage(RequestImage info);
///
/// 对订阅请求事件进行处理
///
/// 订阅请求事件信息实体
///
string HandleEventSubscribe(RequestEventSubscribe info);
///
/// 对菜单单击请求事件进行处理
///
/// 菜单单击请求事件信息实体
///
string HandleEventClick(RequestEventClick info);
}
从上面的代码可以看出,不同的消息,到处理函数这里,就以不同的消息实体类的方式传递过来了(注意:实体类是我根据程序开发需要自己定义的,非微信本身的实体类),这样非常方便我们处理操作,否则每次需要解析不同的消息内容,很容易出现问题,这样强类型的数据类型,提高了我们开发微信应用的强壮型和高效性。这些实体类的对象有一定的继承关系的,他们的继承关系如下所示。
以上就是c#使用微信接口开发微信门户应用中微信消息的处理和应答的方法介绍的详细内容,更多请关注php中文网其它相关文章!