把官方文档中的消息封装成类:
处理微信请求,响应一条文本消息返回微信
package com.zsh.service;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.zsh.entity.message.respond.TextMessage;
import com.zsh.util.MessageUtil;
/**
* 核心业务类
*
* @author Administrator
*
*/
public class CoreService {
/**
* 处理微信发来的请求
*
* @param request
* @return
*/
public static String processRequest(HttpServletRequest request) {
// 返回的文本消息内容
String respMessage = null;
try {
// 默认返回的文本消息内容
String respContent = "请求处理异常,亲,请稍后再尝试";
// 解析xml
Map<String, String> requestMap = MessageUtil.parseXml(request);
// 获得数据
String fromUserName = requestMap.get("FromUserName");// 发送方账户
String toUserName = requestMap.get("ToUserName");// 接收方账户(公众账户)
String msgType = requestMap.get("MsgType");// 消息类型
// 回复文本消息
TextMessage textMessage = new TextMessage();
textMessage.setToUserName(fromUserName);
textMessage.setFromUserName(toUserName);
textMessage.setCreateTime(new Date().getTime());
textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
textMessage.setFuncFlag(0);
// 文本消息
if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
String content = requestMap.get("Content");// 消息内容
System.out.println(content);
if (content.equals("?")||content.equals("?")) {
StringBuffer buffer = new StringBuffer();
buffer.append("您好,我正在测试:").append("\n\n");
buffer.append("1 第一行").append("\n");
buffer.append("2 第二行").append("\n");
buffer.append("3 第三行").append("\n");
buffer.append("3 <a href=\"http://www.baidu.com\">百度</a>").append("\n");
buffer.append("回复“?”显示此菜单");
respContent = buffer.toString();
}else {
respContent = "您发送的是文本消息!";
}
}
// 图片消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {
respContent = "您发送的是图片消息!";
}
// 地理消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {
respContent = "您发送的是地理消息 !";
}
// 音频消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {
respContent = "您发送的是音频消息!";
}
// 链接消息
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {
respContent = "您发送的是链接消息 !";
}
// 事件推送
else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
// 事件类型
String eventType = requestMap.get("Event");
// 订阅
if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
respContent = "谢谢您的关注!";
}
// 取消订阅
else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {
respContent = "期待您的下次关注!";
}
// 自定义菜单点击事件
else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {
respContent = "你发送的是自定义菜单点击事件!";
}
}
//设置消息内容
textMessage.setContent(respContent);
//转化为xml
respMessage=MessageUtil.textMessageToXml(textMessage);
} catch (Exception e) {
e.printStackTrace();
}
return respMessage;
}
}
/**
* 处理微信服务器发来的消息
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
//处理请求
String respMessage=CoreService.processRequest(request);
//响应
PrintWriter out = response.getWriter();
out.print(respMessage);
out.close();
out=null;
}