[摘要]本文对公众平台开发者模式进行了详细的讲解,并对主要代码进行讲解分析,让初学者尽快上手。本次的教程主要是对公众平台开发者模式的讲解,网络上很多类似文章,但很多都让初学开发的人一头雾水,所以总结自己的开发经验,将开发的整个过程系统的列出,并对主要代码进行讲解分析,让初学者尽快上手。
在阅读本文之前,应对公众平台的官方开发文档有所了解,知道接收和发送的都是xml格式的数据。另外,在做内容回复时用到了图灵机器人的api接口,这是一个自然语言解析的开放平台,可以帮我们解决整个开发过程中最困难的问题,此处不多讲,下面会有其详细的调用方式。
1.1 在登录官方平台之后,开启开发者模式,此时需要我们填写url和token,所谓url就是我们自己服务器的接口,用WechatServlet.java来实现,相关解释已经在注释中说明,代码如下:
package demo.servlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import javax.servlet.ServletException;
import demo.process.WechatProcess;
* 服务端收发消息接口
* @author pamchen-1
public class WechatServlet extends HttpServlet {
* The doGet method of the servlet.
* This method is called when a form has its tag value method equals to get.
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“UTF-8”);
response.setCharacterEncoding(“UTF-8”);
/** 读取接收到的xml消息 */
StringBuffer sb = new StringBuffer;
InputStream is = request.getInputStream;
InputStreamReader isr = new InputStreamReader(is, “UTF-8”);
BufferedReader br = new BufferedReader(isr);
String s = “”;
while ((s = br.readLine) != null) {
sb.append(s);
String xml = sb.toString; //次即为接收到端发送过来的xml数据
String result = “”;
/** 判断是否是接入激活验证,只有首次接入验证时才会收到echostr参数,此时需要把它直接返回 */
String echostr = request.getParameter(“echostr”);
if (echostr != null && echostr.length > 1) {
result = echostr;
//正常的处理流程
result = new WechatProcess.processWechatMag(xml);
OutputStream os = response.getOutputStream;
os.write(result.getBytes(“UTF-8”));
os.flush;
os.close;
} catch (Exception e) {
e.printStackTrace;
* The doPost method of the servlet.
* This method is called when a form has its tag value method equals to
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);