Share the implementation method of java version of WeChat robot

Y2J
Release: 2017-04-28 10:49:43
Original
6219 people have browsed it

   
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
   
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
   
import com.eiyoung.wechat.web.utils.Message;
import com.eiyoung.wechat.web.utils.ReplyMessage;
import org.apache.commons.io.IOUtils;
   
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
   
   
public class WeChat extends HttpServlet {
    private static final long serialVersionUID = 1L;
   
   
    public WeChat() {
        super();
    }
   
    /**
     * 验证
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = response.getWriter();
        String echo = request.getParameter("echostr");
        System.out.print(echo);
        echo = new String(echo.getBytes("ISO-8859-1"),"UTF-8");
        pw.println(echo);
    }
   
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = response.getWriter();
        String wxMsgXml = IOUtils.toString(request.getInputStream(),"utf-8");
        Message textMsg = null;
        try {
            textMsg = getMessage(wxMsgXml);
        } catch (Exception e) {
            e.printStackTrace();
        }
        StringBuffer replyMsg = new StringBuffer();
        if(textMsg != null){
            //增加你所需要的处理逻辑,这里只是简单重复消息
            replyMsg.append("您给我的消息是:");
            replyMsg.append(textMsg.getContent());
        }
        else{
            replyMsg.append(":)不是文本的消息,我暂时看不懂");
        }
        String returnXml = getReplyMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName());
        System.out.print(textMsg.toString());
        System.out.print(returnXml.toString());
        pw.println(returnXml);
    }
   
    private Message getMessage(String xml){
        XStream xstream = new XStream(new DomDriver());
        xstream.alias("xml", Message.class);
        xstream.aliasField("ToUserName", Message.class, "toUserName");
        xstream.aliasField("FromUserName", Message.class, "fromUserName");
        xstream.aliasField("CreateTime", Message.class, "createTime");
        xstream.aliasField("MsgType", Message.class, "messageType");
        xstream.aliasField("Content", Message.class, "content");
        xstream.aliasField("MsgId", Message.class, "msgId");
        Message Message = (Message)xstream.fromXML(xml);
        return Message;
    }
   
    private String getReplyMessage(String replyMsg,String toUserName,String fromUserName){
        ReplyMessage we = new ReplyMessage();
        we.setMessageType("text");
        we.setFuncFlag("0");
        we.setCreateTime(new Long(new Date().getTime()).toString());
        we.setContent(replyMsg);
        we.setToUserName(toUserName);
        we.setFromUserName(fromUserName);
        XStream xstream = new XStream(new DomDriver());
        xstream.alias("xml", ReplyMessage.class);
        xstream.aliasField("ToUserName", ReplyMessage.class, "toUserName");
        xstream.aliasField("FromUserName", ReplyMessage.class, "fromUserName");
        xstream.aliasField("CreateTime", ReplyMessage.class, "createTime");
        xstream.aliasField("MsgType", ReplyMessage.class, "messageType");
        xstream.aliasField("Content", ReplyMessage.class, "content");
        xstream.aliasField("FuncFlag", ReplyMessage.class, "funcFlag");
        String xml =xstream.toXML(we);
        return xml;
    }
   
   
}
   
===========================================================================
package com.eiyoung.wechat.web.utils;
   
/**
 * Created with IntelliJ IDEA.
 * User: sb
 * Date: 8/1/13
 * Time: 10:37 PM
 * To change this template use File | Settings | File Templates.
 */
public class ReplyMessage {
   
    private String FuncFlag;//消息编号
    private String fromUserName;//发送人
    private String toUserName;//接收人
    private String content;//内容
    private String messageType;//消息类型
    private String createTime;//创建日期
   
   
    public String getContent() {
        return content;
    }
   
    public void setContent(String content) {
        this.content = content;
    }
   
    public String getMessageType() {
        return messageType;
    }
   
    public void setMessageType(String messageType) {
        this.messageType = messageType;
    }
   
    public String getFromUserName() {
        return fromUserName;
    }
   
    public void setFromUserName(String fromUserName) {
        this.fromUserName = fromUserName;
    }
   
    public String getToUserName() {
        return toUserName;
    }
   
    public void setToUserName(String toUserName) {
        this.toUserName = toUserName;
    }
   
    public String getCreateTime() {
        return createTime;
    }
   
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
   
    public String getFuncFlag() {
        return FuncFlag;
    }
   
    public void setFuncFlag(String funcFlag) {
        FuncFlag = funcFlag;
    }
   
    public String toString(){
        return "createTime:"+getCreateTime()+"\\ntoUserName:"+getToUserName()+"\\n FromUserName:"+getFromUserName()+"\\nmessageType:"+getMessageType()+"\\ncontent:"+getContent();
    }
}
   
===============================================================================
package com.eiyoung.wechat.web.utils;
   
import java.util.Date;
   
/**
 * Created with IntelliJ IDEA.
 * User: sb
 * Date: 8/1/13
 * Time: 10:37 PM
 * To change this template use File | Settings | File Templates.
 */
public class Message {
   
    private String msgId;//消息编号
    private String fromUserName;//发送人
    private String toUserName;//接收人
    private String content;//内容
    private String messageType;//消息类型
    private String createTime;//创建日期
   
   
    public String getContent() {
        return content;
    }
   
    public void setContent(String content) {
        this.content = content;
    }
   
    public String getMessageType() {
        return messageType;
    }
   
    public void setMessageType(String messageType) {
        this.messageType = messageType;
    }
   
    public String getFromUserName() {
        return fromUserName;
    }
   
    public void setFromUserName(String fromUserName) {
        this.fromUserName = fromUserName;
    }
   
    public String getToUserName() {
        return toUserName;
    }
   
    public void setToUserName(String toUserName) {
        this.toUserName = toUserName;
    }
   
    public String getCreateTime() {
        return createTime;
    }
   
    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }
   
    public String getMsgId() {
        return msgId;
    }
   
    public void setMsgId(String msgId) {
        this.msgId = msgId;
    }
   
    public String toString(){
        return "msgId:"+getMsgId()+"\\ncreateTime:"+getCreateTime()+"\\ntoUserName:"+getToUserName()+"\\n FromUserName:"+getFromUserName()+"\\nmessageType:"+getMessageType()+"\\ncontent:"+getContent();
    }
}
==============================================================================
maven
 
    
      junit
      junit
      3.8.1
      test
    
    
      javax.servlet
      servlet-api
      3.0-alpha-1
    
      
          joda-time
          joda-time
          2.2
      
      
          org.apache.commons
          commons-io
          1.3.2
      
      
          com.thoughtworks.xstream
          xstream
          1.4.3
      
Copy after login

The above is the detailed content of Share the implementation method of java version of WeChat robot. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!