微信二次开发 之 微信文本消息接口实现
Posted C小海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信二次开发 之 微信文本消息接口实现相关的知识,希望对你有一定的参考价值。
1、微信文本消息接口-理解
(1)接受消息的理解
微信服务器(自有的服务器)接收来自普通微信用户发往微信公众号的消息。
(2)发送消息的理解
微信服务器(自有服务器)发往普通微信用户的消息。
(3)消息处理的三种模式
明文模式、兼容模式、安全模式。明文就是微信服务器和微信用户之间的发送消息是明文,安全模式就是发送和接收需要经过加密和解密算法来实现,
兼容模式接收和发送,一者是明文,另一个是密文的方式。
(4)微信服务出现异常的情况
按照目前的情况,微信服务器在5秒内收不到响应会断掉连接,并且重新发起请求,总共重试3次。假如服务器无法保证在5秒内处理回复,
可以直接回复空字串,微信服务器不做任何处理。
2、微信文本消息接口-处理过程
(1)接收消息
微信用户请求资源 --> 微信服务器接收用户的发来信息 --> 由微信服务器中转给我们自己的微信服务器(例如自己买的阿里云、
腾讯云等其他配置的web服务器,配置成自己微信服务器)。
(2)发送消息(响应消息)
我们自己的微信服务器发送消息 --> 经过微信服务器 --> 由微信服务器中转给微信用户。
(3)对普通文本消息类型的处理流程
普通微信用户发送文本消息到微信服务器,微信服务器将发送post请求到我们自己的服务器(带上signature,timestamp,nonce三个参数),
部署在我们服务器的程序,首先要获得用户发过来消息的参数(FromUserName、ToUserName、MsgType、CreateTime、Content),
然后将要响应的消息打包(TextMessage对象,这个对象就是响应消息的一些参数),并将TextMessage对象的数据转为符合要求的xml数据进行响应即可。
3、微信文本消息接口-代码实现
注意:这里的代码是第四节的开发者模式与请求验证的代码基础上进行编写。
(1)在ValidationServlet这个servlet类中重写doPost方法,主要是获取signature、timestamp、nonce这三个字段,掉用之前请求验证方法checkSignature是否通过,通过则进行解析普通用户请求的参数到微信服务器,经微信服务器中转到自己的微信服务器的数据进行解析 。重点看doPost方法:
package com.aixunma.wechat; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.aixunma.wechat.util.ValidationTool; /** * 用来请求微信服务器请求验证 * <p>类的描述:</p> * <p>@Description: TODO</p> * <p>@author 小海</p> * <p>@time:2017年4月27日 下午10:14:10</p> * <p>@Vesion: 1.0</p> */ public class ValidationServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; /** * 微信基本配置请求验证 * 当开发者通过微信公众以上是关于微信二次开发 之 微信文本消息接口实现的主要内容,如果未能解决你的问题,请参考以下文章