package com.github.sd4324530.fastweixin.servlet; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * 微信公众平台交互操作基类,提供几乎所有微信公众平台交互方式 * 基于springmvc框架,方便使用此框架的项目集成 * * @author peiyu */ @Controller public abstract class WeixinControllerSupport extends WeixinSupport { /** * 绑定微信服务器 * * @param request 请求 * @return 响应内容 */ @RequestMapping(method = RequestMethod.GET) @ResponseBody protected final String bind(HttpServletRequest request) { if (isLegal(request)) { //绑定微信服务器成功 return request.getParameter("echostr"); } else { //绑定微信服务器失败 return ""; } } /** * 微信消息交互处理 * * @param request http 请求对象 * @param response http 响应对象 * @throws ServletException 异常 * @throws IOException IO异常 */ @RequestMapping(method = RequestMethod.POST) protected final void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if (isLegal(request)) { String result = processRequest(request); //设置正确的 content-type 以防止中文乱码 response.setContentType("text/xml;charset=UTF-8"); PrintWriter writer = response.getWriter(); writer.write(result); writer.close(); } } }