在手机微信公众号中输入文本、图片、语音、视频、地理位置、链接等消息,手机上返回的结果(均为文本消息)如下图所示(上下屏滑动显示)。
1、创建接收消息类
在包edu.bookcode中创建exofmessage子包,并在包edu.bookcode.exofmessage中创建message.req子包,在包edu.bookcode.exofmessage.message.req中创建类BaseMessage,代码如例1所示。
【例1】类BaseMessage的代码示例。
在包edu.bookcode.exofmessage.message.req中创建类TextMessage,代码如例2所示。
【例2】类TextMessage的代码示例。
在包edu.bookcode.exofmessage.message.req中创建类ImageMessage,代码如例3所示。
【例3】类ImageMessage的代码示例。
在包edu.bookcode.exofmessage.message.req中创建类VoiceMessage,代码如例4所示。
【例4】类VoiceMessage的代码示例。
在包edu.bookcode.exofmessage.message.req中创建类VideoMessage,代码如例5所示。
【例5】类videoMessage的代码示例。
在包edu.bookcode.exofmessage.message.req中创建类LocationMessage,代码如例6所示。
【例6】类LocationMessage的代码示例。
在包edu.bookcode.exofmessage.message.req中创建类LinkMessage,代码如例7所示。
【例7】类LinkMessage的代码示例。
2、创建回复消息类
在包edu.bookcode.exofmessage中创建message.resp子包,在包edu.bookcode.exofmessage.message.resp中创建类BaseMessage,代码如例8所示。
【例8】类BaseMessage的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类TextMessage,代码如例9所示。
【例9】类TextMessage的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类 Image,代码如例10所示。
【例10】类 Image的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类 ImageMessage,代码如例11所示。
【例11】类 ImageMessage的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类Voice,代码如例12所示。
【例12】类Voice的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类VoiceMessage,代码如例13所示。
【例13】类VoiceMessage的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类Video,代码如例14所示。
【例14】类Video的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类VideoMessage,代码如例15所示。
【例15】类VideoMessage的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类Music,代码如例16所示。
【例16】类Music的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类MusicMessage,代码如例17所示。
【例17】类MusicMessage的代码示例。
在包edu.bookcode.exofmessage.message.resp中创建类 Article,代码如例18所示。
【例18】类 Article的代码示例。
在edu.bookcode.exofmessage.message.resp子包中创建类NewsMessage,代码如例19所示。
【例19】类NewsMessage的代码示例。
3、创建类SignUtil
在包edu.bookcode.exofmessage中创建util子包,在包edu.bookcode.exofmessage.util中创建类SignUtil,代码如例20所示。
【例20】类SignUtil的代码示例。
4、创建类MessageUtil
在子包edu.bookcode.exofmessage.util中创建类MessageUtil,代码如例21所示。
【例21】类MessageUtil 的代码示例。
5、创建类CoreService
在包edu.bookcode.exofmessage中创建service子包,并在包edu.bookcode.exofmessage.service中创建类CoreService,代码如例22所示。
【例22】类CoreService的代码示例。
6、创建类ExOfMessageController
在包edu.bookcode.exofmessage中创建controller子包,并在包edu.bookcode.exofmessage.controller中创建类ExOfMessageController,代码如例23所示。
【例23】类ExOfMessageController的代码示例。
7、运行程序
启动内网穿透工具后,修改ReceiveMessageController的相对地址,并再次在IDEA中运行项目入口类WxgzptkfbookApplication。
在手机端的微信公众号中输入文本、图片、语音、视频、地理位置、链接等消息,手机上返回的结果(均为文本消息)如图1和图2所示(上下屏滑动显示)。
■图1在手机端的微信公众号中接收文本、图片、语音、视频等消息并被动回复这些消息的输出结果
■ 图2在手机端的微信公众号中接收并回复地理位置、链接等消息并被动回复这些消息的输出结果
8、示例说明
首先,对不同类型消息的封装采用了不同的方法(不完全相同)。其次,对消息(XML格式的数据)的处理也采用了不同的方法,示例中利用了用已有的开源框架Dom4j和XStream(假如之前没有在文件pom.xml增加对它们的依赖就需要添加依赖)来实现对XML的处理。
通过对比,可以发现微信小程序之微信公众平台应用开发中基于规范的开发只要满足规范要求,开发(编码实现)就有较大的自由度。