1、首先,去官网注册一个微信公众号
2、点击开发者中心,填写服务器配置信息
3、通过ngrok来映射本地的请求到服务器端
4、通过代码来验证请求,并给出相应的回复,不多说,贴代码
package com.weixin.action; import java.io.IOException; /* * 第一次请求的时候是get请求,用户验证 * 第二次请求就是Post请求,传递消息和返回消息 */ import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class WeixinServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 获取参数,然后验证是否是正确的连接应用 */ String signature = req.getParameter("signature"); String timestamp = req.getParameter("timestamp"); String nonce = req.getParameter("nonce"); String echostr = req.getParameter("echostr"); PrintWriter out = resp.getWriter(); if(CheckUtil.checkSignature(signature, timestamp, nonce)){ out.print(echostr); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); Map<String,String> map = MessageUtil.readStringXmlOut(req, null); String ToUserName = map.get("ToUserName"); String FromUserName = map.get("FromUserName"); // String CreateTime = map.get("CreateTime"); String Content = map.get("Content"); // String MsgId = map.get("MsgId"); String MsgType = map.get("MsgType"); PrintWriter writer = resp.getWriter(); String msg = null; if(MessageUtil.MESSAGE_TEXT.equals(MsgType)){ if("1".equals(Content)){ Content = "你好"; }else if("2".equals(Content)){ Content = "暂时"; } msg = MessageUtil.initText(ToUserName, FromUserName, Content); }else if(MessageUtil.MESSAGE_EVENT.equals(MsgType)){ String event = map.get("event"); if(MessageUtil.MESSAGE_SUBSCRIBE.equals(event)){ msg = MessageUtil.initText(ToUserName, FromUserName, MessageUtil.menuText()); } } writer.print(msg); writer.close(); } }