@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Receive event."); if (eventReceiver == null) { throw new IdeaWxException( IdeaWxExceptionCode.WX_EVENT_RECEIVER_NOT_FOUND, "EventReceiver is not found."); } InputStream in = req.getInputStream(); resp.setContentType("application/xml"); resp.setCharacterEncoding("UTF-8"); SAXReader reader = new SAXReader(); Document doc; try { doc = reader.read(in); Element root = doc.getRootElement(); System.out.println(doc.asXML()); WxBaseReceivedMessage receiveMessage = parseReceiveMessage(root); WxSendMessage message; if (receiveMessage instanceof WxSubscribeEvent) { message = eventReceiver.subscribeEvent((WxSubscribeEvent) receiveMessage); } else if (receiveMessage instanceof WxUnsubscribeEvent) { message = eventReceiver.unsubscribeEvent((WxUnsubscribeEvent) receiveMessage); } else if (receiveMessage instanceof WxScanEvent) { message = eventReceiver.scanEvent((WxScanEvent) receiveMessage); } else if (receiveMessage instanceof WxLocationEvent) { message = eventReceiver.locationEvent((WxLocationEvent) receiveMessage); } else if (receiveMessage instanceof WxMenuEvent) { message = eventReceiver.menuEvent((WxMenuEvent) receiveMessage); } else if (receiveMessage instanceof WxTextMessage) { message = eventReceiver.textMessage((WxTextMessage) receiveMessage); } else if (receiveMessage instanceof WxImageMessage) { message = eventReceiver.imageMessage((WxImageMessage) receiveMessage); } else if (receiveMessage instanceof WxVideoMessage) { message = eventReceiver.videoMessage((WxVideoMessage) receiveMessage); } else if (receiveMessage instanceof WxVoiceMessage) { message = eventReceiver.voiceMessage((WxVoiceMessage) receiveMessage); } else if (receiveMessage instanceof WxShortVideoMessage) { message = eventReceiver.shortVideoMessage((WxShortVideoMessage) receiveMessage); } else if (receiveMessage instanceof WxLocationMessage) { message = eventReceiver.locationMessage((WxLocationMessage) receiveMessage); } else if (receiveMessage instanceof WxLinkMessage) { message = eventReceiver.linkMessage((WxLinkMessage) receiveMessage); } else { message = new WxNullMessage(); } System.out.println("Event receive end."); System.out.println(message.getXmlStr()); // 响应消息 PrintWriter out = resp.getWriter(); out.write(message.getXmlStr()); out.flush(); out.close(); } catch (DocumentException e) { e.printStackTrace(); throw new IdeaWxException(IdeaWxExceptionCode.WX_EVENT_XML_ERROR, "XML parse error.", e); } }