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> </dependencies>
</pre>