微信消息的处理和应答

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

时间: 2024-12-23 05:51:51

微信消息的处理和应答的相关文章

C#开发微信门户及应用(2)--微信消息的处理和应答

原文:C#开发微信门户及应用(2)--微信消息的处理和应答 微信应用如火如荼,很多公司都希望搭上信息快车,这个是一个商机,也是一个技术的方向,因此,有空研究下.学习下微信的相关开发,也就成为计划的安排事情之一了.本系列文章希望从一个循序渐进的角度上,全面介绍微信的相关开发过程和相关经验总结,希望给大家了解一下相关的开发历程.本篇随笔主要基于上一篇<C#开发微信门户及应用(1)--开始使用微信接口>的基础上进行深入的介绍,介绍微信消息的处理和应答的过程. 1.微信的消息应答交互 我们知道,微信的

一个还算简单的微信消息SDK(基于.Net Standard 2.0)

虽然微信公众号出现了好久,不过在SDK这件事情上感觉并没有多少人把它当成一个有技术含量的事情来做,很多SDK做的事情就是一个代码的堆叠,当然也可能写的好的并没有开源出来.所以在某个翻遍Github而无所获的下午我写了一个基础的基于事件的微信消息类,今年初我把它放到了github和开源中国上并逐步完善,这篇文章就是简单介绍OSS开源系列下的微信消息模块SDK的使用方式,主要围绕以下几个方面分解: 一. 全局介绍 二. 配置管理 三. 框架使用 1. 框架组成元素 2. 框架支持的模式 四. 生命周

微信消息回复

微信消息回复的实例代码 具体的看一下我带的simplexml_load_string()函数的博客解析 (数据的变化类型和数据传输才是数据的流向) <?php class IndexController extends CommonController{ //加载首页 public function Index(){ //define your token $wechatObj = new wechatCallbackapiTest(); //判定变量 if(isset($_GET['echos

脱离微信客户端发送微信消息(二)

Python版本:使用微信API发送微信消息 本文代码借用朋友编写的成品代码,使用Python3编写,配合上一篇文章:<脱离微信客户端发送微信消息(一)>经过试验完全可以发送微信消息. 文件:BaseData.py Python3代码: 1 # -*- coding: utf-8 -*- 2 3 corpid="XXXXXXX" # 设置-权限设置-部门-查看CorpID 4 corpsecret="YYYYYYYYYY" # 设置-权限设置-部门-查看

微信消息中的CreateTime转换成标准格式的时间

/** * 将微信消息中的CreateTime转换成标准格式的时间(yyyy-MM-dd HH:mm:ss) * * @param createTime 消息创建时间 * @return */ public static String formatTime(String createTime) { // 将微信传入的CreateTime转换成long类型,再乘以1000 long msgCreateTime = Long.parseLong(createTime) * 1000L; DateFo

玩玩微信公众号Java版之二:接收、处理及返回微信消息

前面已经配置了微信服务器,那么先开始最简单的接收微信消息吧~ 可以用我们的微信号来直接进行测试,下面先看测试效果图: 这是最基本的文本消息的接收.处理及返回,来看看是怎么实现的吧! 首先可以参考微信消息相关的接口文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 具体实现如下: 第一步,接收微信发送的文本消息入口: 1 /** 2 * 处理微信服务器发来的消息 3 */ 4 public void doPost

使用delphi+intraweb进行微信开发4—微信消息加解密

在上一讲当中我做了个简单的微信文本消息回显应用,当时是以微信明文方式实现的,其实微信推荐的是消息应该加密传输以增加安全性,所以这讲说说微信消息的加解密. 在微信的帮助页面上可以下载微信消息加解密的例程,可惜的是没有Delphi语言的示例,网上搜索一番,没有人贡献出写好的Delphi版的微信加解密算法单元,好在有官方示例的C#版的,那就按照C#的改一个吧. 微信消息是以AES算法进行的加密处理,而遗憾的是Delphi并没有内置的AES算法单元,必须找第三方实现的,不过一般第三方实现的算法都因为种种

asp.net C# 微信消息自动回复 asp.net版

//asp.net C# 微信消息自动回复 asp.net版 protected void Page_Load(object sender, EventArgs e) { if (Request.HttpMethod == "POST") { string weixin = ""; weixin = PostInput();//获取xml数据 if (!string.IsNullOrEmpty(weixin)) { ResponseMsg(weixin);////调

[原创]chromium源码阅读-进程间通信IPC.消息的接收与应答

chromium源码阅读-进程间通信IPC.消息的接收与应答 chromium源码阅读-进程间通信IPC.消息的接收与应答 介绍 chromium进程间通信在win32下是通过命名管道的方式实现的,最后的数据都是以二进制流的方式进行传播,pickle类就是负责消息的封包与解包功能,它将各种数据已二进制的形式写到内存缓冲区中,在实际通信的时候通过与其他一些辅助类与模板函数来实现具体数据结构的写与读.本文主要介绍的是chromium在将消息发送与接收过程中,以及chromium如何通过各种消息宏与C