java版微信公众号开发(三):自动回复功能实现

普通消息的类型分为7种:

  1. 文本消息
  2. 图片消息
  3. 语音消息
  4. 视频消息
  5. 小视频消息
  6. 地理位置消息
  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结构是: < ![CDATA[toUser] ]> < ![CDATA[fromUser] ]> 1348831860 < ![CDATA[text] ]> < ![CDATA[this is a test] ]> 1234567890123456 参数包含: 根据开发文档直接上手--->_> 实体类的定义: 定义一个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; } } 另外,图文的实现与之类似,这里不在进行过多的阐述,源码中已经实现,需要的可以直接下载查看。 源码:
经验分享 程序员 微信小程序 职场和发展