首先感谢liuhf等大佬的代码。
前些日子封装了一个微信开发框架,也没必要起名字,毕竟不是什么大项目,个人自用妥妥的。
使用方法:
新建一java web项目
新建servlet作为微信接口:
/**
* Servlet implementation class WxInterface
*/
@WebServlet(name = "/WxInterface", loadOnStartup = 1, urlPatterns = "/WxInterface")
public class WxInterface extends HttpServlet {
private static final long serialVersionUID = 1L;
public static final boolean ENABLE_ACCESS_TOKEN_MAINTAIN = true;
// 预读取文本资源
private String menuTpl = null;
private String subscribeMessage = null;
private String bindTip = null;
private String unbindTip = null;
public static WxBot wxBot;
private MessageHandler handler = new MessageHandler(wxBot) {
public String onTextMessage(java.util.Map<String, String> requestMap) {
return "success";
};
public String onGetAccessToken(String accesstoken) {
System.out.println("获取到了Access Token");
String resultMenu = wxBot.setMenu(menuTpl);
System.out.println("更新菜单请求的返回:" + resultMenu);
return null;
};
public String onEventClickMessage(java.util.Map<String, String> requestMap) {
// NetUtil.dumpMap(requestMap);
String eventKey = requestMap.get("EventKey");
String fromUserName = requestMap.get("FromUserName");
String toUserName = requestMap.get("ToUserName");
if (eventKey.equals("V1001_BIND")) {
String finalBindTip = String.format(bindTip, "http://www.baidu.com/");
return WxBot.makeSimpleMessage(toUserName, fromUserName, finalBindTip);
} else if (eventKey.equals("V1001_UNBIND")) {
String finalUnBindTip = String.format(unbindTip, "http://www.baidu.com/");
return WxBot.makeSimpleMessage(toUserName, fromUserName, finalUnBindTip);
}
return "success";
};
public String onEventSubscribeMessage(java.util.Map<String, String> requestMap) {
// 发送方帐号
String fromUserName = requestMap.get("FromUserName");
// 开发者微信号s
String toUserName = requestMap.get("ToUserName");
// 回复文本消息
return WxBot.makeSimpleMessage(toUserName, fromUserName, subscribeMessage);
};
};
/**
* @see HttpServlet#HttpServlet()
*/
public WxInterface() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
wxBot.checkSignature(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
wxBot.processRequest(request, response);
// doGet(request, response);
}
@Override
public void init() throws ServletException {
menuTpl = IoUtil.ReadFile(getServletContext().getRealPath("wx/menu.json"));
subscribeMessage = IoUtil.ReadFile(getServletContext().getRealPath("wx/subscribe.txt"));
bindTip = IoUtil.ReadFile(getServletContext().getRealPath("wx/bindTip.txt"));
unbindTip = IoUtil.ReadFile(getServletContext().getRealPath("wx/unbindTip.txt"));
wxBot = new WxBot("token", "appid", "secret",
"aes");
wxBot.setMessageHandler(handler);
super.init();
}
@Override
public void destroy() {
wxBot.release();
super.destroy();
}
}