java版微信機器人代碼

package com.eiyoung.wechat.web.controller;html

 import java.io.IOException;java

import java.io.PrintWriter;web

import java.util.Date;apache

import javax.servlet.ServletException;api

import javax.servlet.http.HttpServlet;app

import javax.servlet.http.HttpServletRequest;maven

import javax.servlet.http.HttpServletResponse;ide

import com.eiyoung.wechat.web.utils.Message;ui

import com.eiyoung.wechat.web.utils.ReplyMessage;this

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();http://www.huiyi8.com/tishiyin/ 提示音

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>

  </dependencies>

相關文章
相關標籤/搜索