微信消息的处理和应答

1.微信消息应答流程
微信服务器是客户手机和开发服务器信息流通的桥梁。消息流程图如下:

2.微信服务器向开发服务器请求消息
1)文本消息处理
2)事件消息处理
3)开发者认证处理


微信消息处理入口操作,代码示例如下:

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();
    }
}

WeixinApiDispatch消息分发管理类,它提取请求消息的内容,并构建不同类型的消息参数,传递给不同的响应函数进行处理,然后返回封装好的XML内容,作为响应。

/// <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);
}

代码处理逻辑如下图所示:

具体的消息处理类:

/// <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);

..............................
}

其中,实体类参数是我们根据程序开发自己定义的,继承关系如下所示:

3.开发者服务器向微信服务器进行的消息请求消息
我们可以通过微信,进行相关的消息回复或者数据管理操作。
如下如所示:

 

微信的回复消息处理,处理逻辑如下图所示:

 

参考资料:http://www.cnblogs.com/wuhuacong/p/3614175.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值