微信开发实战(5)—粉丝关注开发者公众号时,自动回复消息
本篇文章对应源码下载:
javaweixin-v1.1
链接:http://pan.baidu.com/s/1pLk1oiZ
密码:7uba
上篇文章主要介绍了URL、Token认证,以及使用免费的新浪SAE服务器搭建公众号的web应用。相信按照文章讲解,开发者们已经成功地完成了开发者公众号的配置。
上篇文章提到,URL还有一个作用:认证通过之后,URL就作为开发者服务器与微信服务器之间互动通信的桥梁。本篇文章就来实现此功能:关注开发者号时,自动回复文本消息。
一、URL的POST方法
如果你看了WxApiController.Java 这个类源码,你会发现在URL、Token认证的的时候,http请求的method用的是GET。
那么微信服务器和开发者服务器也用此URL进行通信,会不会与Token认证冲突呢?显然是不会的,因为消息互动通信http请求用的是POST方法:
(详见源码)
二、接收事件推送接口
粉丝关注公众号时,触发的是订阅事件,接口文档如下:
http://mp.weixin.qq.com/wiki/7/9f89d962eba4c5924ed95b513ba69d9b.html
细节不再赘述,参考文档即可。
注意:
源码中将ToUserName、FromUserName等参数进行了包装;
发送时的ToUserName是回复时的FromUserName,
发送时的FromUserName是回复时的ToUserName;
三、消息互动原理
在“开发者公众号的交互原理 ”这篇文章中讲解过,此处不再细讲,如下图:
很显然的,当前公众号是开发者号,会把订阅事件消息包装成XML数据(第4、5步),转发给开发者服务器。开发者服务器针对消息进行业务处理(源码中回复一条文字),转换为XML回复给微信平台服务器。
四、V1.1—源码结构介绍
在上篇源码(V1.0)的基础上,V1.1添加了api包。主要作用是处理微信服务器发送来的消息,将消息转换为MsgRequest。
再将回复消息转换为MsgResponse,和对应的XML数据,返回给微信平台。也就是上一步流程图中流转过程。详细请参考源码。
其中,MsgHandler.java中设置自动回复内容:
五、新浪SAE发布,并关注测试号
如上篇文章一样,登录sae,上传war包部署:
5.1,进入菜单“应用 》代码管理”,上传war包
上传成功,访问应用首页看是否正常(如前一篇)。
5.2,关注测试号,查看回复消息
就是代码中的设置的内容,成功了!!