利用微信公众平台实现自动回复消息

最近公司需要拿微信公众平台做个东西,所以就开始了最基本学习,网上很多是php版的,香港空间,对于我这个只会java,不会php的就只能在网上找点只言片语来一点一点学习了。不费话了直接贴图看效果(很简单的)。

不会做关注时就回复信息,所以必须先发送“?”,才能出现提示。回复“1”和“其他”都是返回文字信息,“2”是音乐信息,“3”是图文信息。

好了,下面进入正题。

1、首先必须开通微信公中平台,还得申请到高级功能的(这个点比较坑,我等了两天才申请到的),关于申请公众平台我就不说了,网上很多介绍,服务器空间,自己看吧。

2、必须有自己的服务器资源,因为公众平台开发者模式开启时,必须填写接口配置信息(成为开发者)。

服务器资源我是用的是百度开发者中心来创建自己的应用。百度开发者中心:

成为微信公众平台开发者前必须发布好自己的服务器资源,因为微信服务器将发送GET请求到填写的URL上(后面详细介绍)。

3、创建自己的应用。

这是整个项目结构。

下面逐一介绍:

WbChat extends HttpServlet{serialVersionUID = 1L; WbChat() { 6super(); 7 } 8 @Override doGet(HttpServletRequest request, HttpServletResponse response) 10throws ServletException, IOException {response.setContentType(“text/html;charset=UTF-8”); 13PrintWriter pw = response.getWriter(); 14String echo = request.getParameter(“echostr”); 15echo = new String(echo.getBytes(“ISO-8859-1″),”UTF-8”); 16 pw.println(echo); 17//当你提交成为开发者的URL和Token时,微信服务器将发送GET请求到填写的URL上, } 20 21 @Override doPost(HttpServletRequest request, HttpServletResponse response) 23throws ServletException, IOException { 24 //当你用微信给平台发送信息时就会到这里response.setContentType(“text/html;charset=UTF-8″); 27PrintWriter pw = response.getWriter(); 28String wxMsgXml = IOUtils.toString(request.getInputStream(),”utf-8”); 29RequestTextMessage textMsg = null; 30try { 31textMsg = getRequestTextMessage(wxMsgXml); 32} catch (Exception e) { 33 e.printStackTrace(); 34 } 35StringBuffer replyMsg = new StringBuffer(); 36String receive = textMsg.getContent().trim(); 37String returnXml = null;(textMsg != null&&!receive.equals(“”)) { 40if (receive.equals(“?”)||receive.equals(“?”)) { 41 42replyMsg.append(“欢迎使用微信平台!”); 43replyMsg.append(“\r\n1、当前时间”); 44replyMsg.append(“\r\n2、听音乐”); 45replyMsg.append(“\r\n3、看图文”); 46replyMsg.append(“\r\n其他、回音壁请直接输入文字信息”); 47 48returnXml = getReplyTextMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName());(receive.equals(“2”)) {returnXml = getReplyMusicMessage(textMsg.getFromUserName(),textMsg.getToUserName());} else if (receive.equals(“3”)) {returnXml = getReplyTuwenMessage(textMsg.getFromUserName(),textMsg.getToUserName());(receive.equals(“1”)) {SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); 65 66replyMsg.append(“当前时间\r\n”+df.format(new Date())); 67returnXml = getReplyTextMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName()); 68 69} else { 70 71replyMsg.append(“收到: ” + textMsg.getContent()); 72returnXml = getReplyTextMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName()); 73 74 } 75} else { 76 77replyMsg.append(“别闹了,这谁看得懂啊!”); 78returnXml = getReplyTextMessage(replyMsg.toString(), textMsg.getFromUserName(),textMsg.getToUserName()); 79 80 } 81 pw.println(returnXml); 82 } RequestTextMessage getRequestTextMessage(String xml){ 87 88XStream xstream = new XStream(new DomDriver()); 89 90xstream.alias(“xml”, RequestTextMessage.class); 91xstream.aliasField(“ToUserName”, RequestTextMessage.class, “toUserName”); 92xstream.aliasField(“FromUserName”, RequestTextMessage.class, “fromUserName”); 93xstream.aliasField(“CreateTime”, RequestTextMessage.class, “createTime”); 94xstream.aliasField(“MsgType”, RequestTextMessage.class, “messageType”); 95xstream.aliasField(“Content”, RequestTextMessage.class, “content”); 96xstream.aliasField(“MsgId”, RequestTextMessage.class, “msgId”); 97 98RequestTextMessage requestTextMessage = (RequestTextMessage)xstream.fromXML(xml); 99return requestTextMessage;100 } String getReplyTextMessage(String content, String fromUserName,String toUserName){103104ReplyTextMessage we = new ReplyTextMessage();105we.setMessageType(“text”);106we.setFuncFlag(“0”);107we.setCreateTime(new Long(new Date().getTime()).toString());108 we.setContent(content);109 we.setToUserName(fromUserName); 110 we.setFromUserName(toUserName);111XStream xstream = new XStream(new DomDriver()); 112xstream.alias(“xml”, ReplyTextMessage.class);113xstream.aliasField(“ToUserName”, ReplyTextMessage.class, “toUserName”);114xstream.aliasField(“FromUserName”, ReplyTextMessage.class, “fromUserName”);115xstream.aliasField(“CreateTime”, ReplyTextMessage.class, “createTime”);116xstream.aliasField(“MsgType”, ReplyTextMessage.class, “messageType”);117xstream.aliasField(“Content”, ReplyTextMessage.class, “content”);118xstream.aliasField(“FuncFlag”, ReplyTextMessage.class, “funcFlag”);119String xml =xstream.toXML(we);120return xml;121 } String getReplyMusicMessage(String fromUserName,String toUserName){124125ReplyMusicMessage we = new ReplyMusicMessage();126Music music = new Music();127128we.setMessageType(“music”);129we.setCreateTime(new Long(new Date().getTime()).toString());130 we.setToUserName(fromUserName); 131 we.setFromUserName(toUserName);132we.setFuncFlag(“0”);133134music.setTitle(“回家|X-man”);135music.setDescription(“萨克斯 回家 勾起你想家的愁思…”);136137String url = “http://bcs.duapp.com/yishi-music/%E5%9B%9E%E5%AE%B6.mp3?sign=MBO:97068c69ccb2ab230a497c59d528dcce:LdYZ%2FLXohKa6YCy9gbxL%2B1mZ4Co%3D”;138String url2 = “http://bcs.duapp.com/yishi-music/X-man.mp3?sign=MBO:97068c69ccb2ab230a497c59d528dcce:cYV%2B%2Fq2Tlv2de6gqecZynCyIm3k%3D”;139 music.setMusicUrl(url);140 music.setHqMusicUrl(url2);141142 we.setMusic(music);143144XStream xstream = new XStream(new DomDriver()); 145xstream.alias(“xml”, ReplyMusicMessage.class);146xstream.aliasField(“ToUserName”, ReplyMusicMessage.class, “toUserName”);147xstream.aliasField(“FromUserName”, ReplyMusicMessage.class, “fromUserName”);148xstream.aliasField(“CreateTime”, ReplyMusicMessage.class, “createTime”);149xstream.aliasField(“MsgType”, ReplyMusicMessage.class, “messageType”);150xstream.aliasField(“FuncFlag”, ReplyMusicMessage.class, “funcFlag”);151xstream.aliasField(“Music”, ReplyMusicMessage.class, “Music”);152153xstream.aliasField(“Title”, Music.class, “title”);154xstream.aliasField(“Description”, Music.class, “description”);155xstream.aliasField(“MusicUrl”, Music.class, “musicUrl”);156xstream.aliasField(“HQMusicUrl”, Music.class, “hqMusicUrl”);157158String xml =xstream.toXML(we);159return xml;160 } String getReplyTuwenMessage(String fromUserName,String toUserName){164165ReplyTuwenMessage we = new ReplyTuwenMessage();166 167Articles articles = new Articles();168169Item item = new Item();170171we.setMessageType(“news”);172we.setCreateTime(new Long(new Date().getTime()).toString());173 we.setToUserName(fromUserName); 174 we.setFromUserName(toUserName);175we.setFuncFlag(“0”);176we.setArticleCount(1);177178item.setTitle(“俊介”);179item.setDescription(“俊介(SHUNSUKE)是Twitter上现在最流行的偶像犬,是哈多利系博美犬(即俗称英系博美),因为在网上卖萌而走红网络。”);180item.setPicUrl(“http://bcs.duapp.com/yishi-music/111.jpg?sign=MBO:97068c69ccb2ab230a497c59d528dcce:hmzcBYxgI4yUaTd9GvahO1GvE%2BA%3D”);181item.setUrl(“http://baike.baidu.com/view/6300265.htm”);182183 articles.setItem(item);184 we.setArticles(articles);185186XStream xstream = new XStream(new DomDriver()); 187xstream.alias(“xml”, ReplyTuwenMessage.class);188xstream.aliasField(“ToUserName”, ReplyTuwenMessage.class, “toUserName”);189xstream.aliasField(“FromUserName”, ReplyTuwenMessage.class, “fromUserName”);190xstream.aliasField(“CreateTime”, ReplyTuwenMessage.class, “createTime”);191xstream.aliasField(“MsgType”, ReplyTuwenMessage.class, “messageType”);192xstream.aliasField(“Articles”, ReplyTuwenMessage.class, “Articles”);193194xstream.aliasField(“ArticleCount”, ReplyTuwenMessage.class, “articleCount”);195xstream.aliasField(“FuncFlag”, ReplyTuwenMessage.class, “funcFlag”);196197xstream.aliasField(“item”, Articles.class, “item”);198199xstream.aliasField(“Title”, Item.class, “title”);200xstream.aliasField(“Description”, Item.class, “description”);201xstream.aliasField(“PicUrl”, Item.class, “picUrl”);202xstream.aliasField(“Url”, Item.class, “url”);203204String xml =xstream.toXML(we);205return xml;206 }207 208 }

WbChat

与那些新人和旧人们共同经历吧!

利用微信公众平台实现自动回复消息

相关文章:

你感兴趣的文章:

标签云: