java版微信公众号开发(三):自动回复功能实现
普通消息的类型分为7种:
- 文本消息
- 图片消息
- 语音消息
- 视频消息
- 小视频消息
- 地理位置消息
- 链接消息
下面介绍实现文本的自动回复:
文本消息的XML结构是:
<xml>
<ToUserName>< ![CDATA[toUser] ]></ToUserName>
<FromUserName>< ![CDATA[fromUser] ]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType>< ![CDATA[text] ]></MsgType>
<Content>< ![CDATA[this is a test] ]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
参数包含:
根据开发文档直接上手--->_>
实体类的定义: 定义一个BaseMessage,消息基类,封装通用属性:
接下来TextMessage,文本属性TextMessage:
public class TextMessage extends BaseMessage{
// 消息内容
private String Content;
public String getContent() {
return Content;
}
public void setContent(String content) {
Content = content;
}
}
一定要注意,属性名称需要大写,属性名称需要大写,属性名称需要大写!!不要问我为啥这么强调。
新建接口MessageService,并实现接口:
@Autowired
private MessageService messageService;
@RequestMapping(method = RequestMethod.POST)
public void post(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
log.error(e.getMessage(),e);
}
response.setContentType("text/html;charset=UTF-8");
// 调用核心业务类接收消息、处理消息
String respMessage = messageService.newMessageRequest(request);
// 响应消息
PrintWriter out = null;
try {
out = response.getWriter();
out.print(respMessage);
} catch (IOException e) {
e.printStackTrace();
log.error(e.getMessage(),e);
} finally {
out.close();
out = null;
}
}
另外,图文的实现与之类似,这里不在进行过多的阐述,源码中已经实现,需要的可以直接下载查看。
源码:
普通消息的类型分为7种: 文本消息 图片消息 语音消息 视频消息 小视频消息 地理位置消息 链接消息 下面介绍实现文本的自动回复: 文本消息的XML结构是: