实现java版微信机器人的示例源码

发布时间:2021-01-18 11:29:32 作者:小新
来源:亿速云 阅读:558

这篇文章主要介绍实现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版微信机器人的示例源码”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 如何使用Python实现企业微信机器人每天定时发消息示例
  2. Python如何实现微信机器人

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java通过JsApi方式如何实现微信支付

下一篇:java对象如何转换为xml格式

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》