站内搜索

分享java版微信机器人的实现方法

   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 <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>    <dependency>      <groupId>javax.servlet</groupId>      <artifactId>servlet-api</artifactId>      <version>3.0-alpha-1</version>    </dependency>      <dependency>          <groupId>joda-time</groupId>          <artifactId>joda-time</artifactId>          <version>2.2</version>      </dependency>      <dependency>          <groupId>org.apache.commons</groupId>          <artifactId>commons-io</artifactId>          <version>1.3.2</version>      </dependency>      <dependency>          <groupId>com.thoughtworks.xstream</groupId>          <artifactId>xstream</artifactId>          <version>1.4.3</version>      </dependency>

以上就是分享java版微信机器人的实现方法的详细内容,更多请关注php中文网其它相关文章!

  • 上一篇:微信开发的扫码登录处理的步骤详解
  • 下一篇:分享一个Android实现微信自动抢红包的代码实例