在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

java版微信机器人代码

2016-12-20 13:15| 发布者: zhangjf| 查看: 581| 评论: 0

摘要: 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;i ...
  1. import java.io.IOException;
  2. import java.io.PrintWriter;
  3. import java.util.Date;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import com.eiyoung.wechat.web.utils.Message;
  9. import com.eiyoung.wechat.web.utils.ReplyMessage;
  10. import org.apache.commons.io.IOUtils;
  11. import com.thoughtworks.xstream.XStream;
  12. import com.thoughtworks.xstream.io.xml.DomDriver;
  13. public class WeChat extends HttpServlet {
  14. private static final long serialVersionUID = 1L;
  15. public WeChat() {
  16. super();
  17. }
  18. /**
  19. * 验证
  20. * @param request
  21. * @param response
  22. * @throws ServletException
  23. * @throws IOException
  24. */
  25. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  26. response.setContentType("text/html;charset=UTF-8");
  27. PrintWriter pw = response.getWriter();
  28. String echo = request.getParameter("echostr");
  29. System.out.print(echo);
  30. echo = new String(echo.getBytes("ISO-8859-1"),"UTF-8");
  31. pw.println(echo);
  32. }
  33. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  34. response.setContentType("text/html;charset=UTF-8");
  35. PrintWriter pw = response.getWriter();
  36. String wxMsgXml = IOUtils.toString(request.getInputStream(),"utf-8");
  37. Message textMsg = null;
  38. try {
  39. textMsg = getMessage(wxMsgXml);
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. StringBuffer replyMsg = new StringBuffer();
  44. if(textMsg != null){
  45. //增加你所需要的处理逻辑,这里只是简单重复消息
  46. replyMsg.append("您给我的消息是:");
  47. replyMsg.append(textMsg.getContent());
  48. }
  49. else{
  50. replyMsg.append(":)不是文本的消息,我暂时看不懂");
  51. }
  52. String returnXml = getReplyMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName());
  53. System.out.print(textMsg.toString());
  54. System.out.print(returnXml.toString());
  55. pw.println(returnXml);
  56. }
  57. private Message getMessage(String xml){
  58. XStream xstream = new XStream(new DomDriver());
  59. xstream.alias("xml", Message.class);
  60. xstream.aliasField("ToUserName", Message.class, "toUserName");
  61. xstream.aliasField("FromUserName", Message.class, "fromUserName");
  62. xstream.aliasField("CreateTime", Message.class, "createTime");
  63. xstream.aliasField("MsgType", Message.class, "messageType");
  64. xstream.aliasField("Content", Message.class, "content");
  65. xstream.aliasField("MsgId", Message.class, "msgId");
  66. Message Message = (Message)xstream.fromXML(xml);
  67. return Message;
  68. }
  69. private String getReplyMessage(String replyMsg,String toUserName,String fromUserName){
  70. ReplyMessage we = new ReplyMessage();
  71. we.setMessageType("text");
  72. we.setFuncFlag("0");
  73. we.setCreateTime(new Long(new Date().getTime()).toString());
  74. we.setContent(replyMsg);
  75. we.setToUserName(toUserName);
  76. we.setFromUserName(fromUserName);
  77. XStream xstream = new XStream(new DomDriver());
  78. xstream.alias("xml", ReplyMessage.class);
  79. xstream.aliasField("ToUserName", ReplyMessage.class, "toUserName");
  80. xstream.aliasField("FromUserName", ReplyMessage.class, "fromUserName");
  81. xstream.aliasField("CreateTime", ReplyMessage.class, "createTime");
  82. xstream.aliasField("MsgType", ReplyMessage.class, "messageType");
  83. xstream.aliasField("Content", ReplyMessage.class, "content");
  84. xstream.aliasField("FuncFlag", ReplyMessage.class, "funcFlag");
  85. String xml =xstream.toXML(we);
  86. return xml;
  87. }
  88. }
  89. ===========================================================================
  90. package com.eiyoung.wechat.web.utils;
  91. /**
  92. * Created with IntelliJ IDEA.
  93. * User: sb
  94. * Date: 8/1/13
  95. * Time: 10:37 PM
  96. * To change this template use File | Settings | File Templates.
  97. */
  98. public class ReplyMessage {
  99. private String FuncFlag;//消息编号
  100. private String fromUserName;//发送人
  101. private String toUserName;//接收人
  102. private String content;//内容
  103. private String messageType;//消息类型
  104. private String createTime;//创建日期
  105. public String getContent() {
  106. return content;
  107. }
  108. public void setContent(String content) {
  109. this.content = content;
  110. }
  111. public String getMessageType() {
  112. return messageType;
  113. }
  114. public void setMessageType(String messageType) {
  115. this.messageType = messageType;
  116. }
  117. public String getFromUserName() {
  118. return fromUserName;
  119. }
  120. public void setFromUserName(String fromUserName) {
  121. this.fromUserName = fromUserName;
  122. }
  123. public String getToUserName() {
  124. return toUserName;
  125. }
  126. public void setToUserName(String toUserName) {
  127. this.toUserName = toUserName;
  128. }
  129. public String getCreateTime() {
  130. return createTime;
  131. }
  132. public void setCreateTime(String createTime) {
  133. this.createTime = createTime;
  134. }
  135. public String getFuncFlag() {
  136. return FuncFlag;
  137. }
  138. public void setFuncFlag(String funcFlag) {
  139. FuncFlag = funcFlag;
  140. }
  141. public String toString(){
  142. return "createTime:"+getCreateTime()+"\ntoUserName:"+getToUserName()+"\n FromUserName:"+getFromUserName()+"\nmessageType:"+getMessageType()+"\ncontent:"+getContent();
  143. }
  144. }
  145. ===============================================================================
  146. package com.eiyoung.wechat.web.utils;
  147. import java.util.Date;
  148. /**
  149. * Created with IntelliJ IDEA.
  150. * User: sb
  151. * Date: 8/1/13
  152. * Time: 10:37 PM
  153. * To change this template use File | Settings | File Templates.
  154. */
  155. public class Message {
  156. private String msgId;//消息编号
  157. private String fromUserName;//发送人
  158. private String toUserName;//接收人
  159. private String content;//内容
  160. private String messageType;//消息类型
  161. private String createTime;//创建日期
  162. public String getContent() {
  163. return content;
  164. }
  165. public void setContent(String content) {
  166. this.content = content;
  167. }
  168. public String getMessageType() {
  169. return messageType;
  170. }
  171. public void setMessageType(String messageType) {
  172. this.messageType = messageType;
  173. }
  174. public String getFromUserName() {
  175. return fromUserName;
  176. }
  177. public void setFromUserName(String fromUserName) {
  178. this.fromUserName = fromUserName;
  179. }
  180. public String getToUserName() {
  181. return toUserName;
  182. }
  183. public void setToUserName(String toUserName) {
  184. this.toUserName = toUserName;
  185. }
  186. public String getCreateTime() {
  187. return createTime;
  188. }
  189. public void setCreateTime(String createTime) {
  190. this.createTime = createTime;
  191. }
  192. public String getMsgId() {
  193. return msgId;
  194. }
  195. public void setMsgId(String msgId) {
  196. this.msgId = msgId;
  197. }
  198. public String toString(){
  199. return "msgId:"+getMsgId()+"\ncreateTime:"+getCreateTime()+"\ntoUserName:"+getToUserName()+"\n FromUserName:"+getFromUserName()+"\nmessageType:"+getMessageType()+"\ncontent:"+getContent();
  200. }
  201. }
  202. ==============================================================================
  203. maven
  204. <dependencies>
  205. <dependency>
  206. <groupId>junit</groupId>
  207. <artifactId>junit</artifactId>
  208. <version>3.8.1</version>
  209. <scope>test</scope>
  210. </dependency>
  211. <dependency>
  212. <groupId>javax.servlet</groupId>
  213. <artifactId>servlet-api</artifactId>
  214. <version>3.0-alpha-1</version>
  215. </dependency>
  216. <dependency>
  217. <groupId>joda-time</groupId>
  218. <artifactId>joda-time</artifactId>
  219. <version>2.2</version>
  220. </dependency>
  221. <dependency>
  222. <groupId>org.apache.commons</groupId>
  223. <artifactId>commons-io</artifactId>
  224. <version>1.3.2</version>
  225. </dependency>
  226. <dependency>
  227. <groupId>com.thoughtworks.xstream</groupId>
  228. <artifactId>xstream</artifactId>
  229. <version>1.4.3</version>
  230. </dependency>
  231. </dependencies>
复制代码

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-8 10:30

Copyright 2015-2025 djqfx

返回顶部