很多小广告网站看得不舒服,可以到原文地址去看
以下是原文地址
http://wenchangping.iteye.com/blog/1919248
这个暑假,主要是用来研究Unity3D和微信平台开发了,我的Unity还没弄出结果,倒是先把微信平台给做的差不多了,那么不废话,今天就教大家如何去用java实现微信公众平台接口的。
1.首先先给大家一个链接,相信大家如果对这个感兴趣的话,都已经看过了,不过我还是发一发,研究一下这个接口。http://mp.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5,这个是微信公众平台的一个接口,他规定了你如何你与微信服务器通信的一个协议方式,用户发来的消息会首先进入微信服务器,然后通过微信服务器给你把消息传递过来,所以,你与用户之间其实是没有直接进行连接的,这点要认识到。当然官方有一个PHP格式的文件,如果懂得话,可以直接下载自己观摩观摩。我这边也就不多说了。
2.微信公众平台的搭建。首先你必须要有一个申请一个微信公众平台账号,这个很简单的https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN自己去申请就Ok,申请后,进入高级功能的开发模式中(其他功能可以自己去了解,这里主要讲对于平台的开发),可以看到他会要你填写一个URL和token的东西,URL是你的服务器相映类的映射地址(这个对于学java中web的人来说,并不陌生吧),token是一个相当于”用来加密的码“的东西,API文档中也有介绍。这个东西呢,是一个处于验证阶段的东西,就好像是你要设定一个URL,那人家必须保证,你这个URL地址是能用的,他会传给你一个echostr的参数,然后给你很多其他很多参数(如你自己的token等)来确认这个请求是来自微信平台,最后把他传给你的echostr传回给微信平台,平台就会把你说输入的URL绑定,以后就不用验证了,这个URL就被微信说识别,以后要是有人发送了消息给你的平台,他就会通过URL把这个消息转发给你。这是微信验证的整个过程。那么实现验证的代码是怎么的呢,对于我来说就一句话:
response.getWriter().write(request.getParameter("echostr"));
为什么会显得如此简单呢,是因为我的服务器只是用来实现这个平台的,所以不需要官方给定的那么多验证,如果说你的服务器是已经开始运行在处理其他工作的话,那就需要验证,参考:http://blog.csdn.net/wangqianjiao/article/details/8469780这个人详细说明了平台验证的过程,包括加密呀,获取验证什么的。但我还是说明一下,如果你的服务器没用来做其他用途,那么就一句话就行,在doGet里边写上这句话,就能轻易完成验证,何必那么麻烦呢,是吧?
3.微信平台的使用。在搭建好平台,系统识别了你的URL后,就应该学会对消息经行处理。请记住,验证过程只是用来绑定URL的,一旦绑定成功,成为开发者,之前工作就没用了,请把那句代码请删掉(不删也没什么,但最好是删掉,以免造成程序可读性降低),在消息发送的过程中,平台是通过Post来发送的,所以你的所有处理,都得在doPost中经行。
(1).如何获取消息?在微信的API文档中也有消息描述,他会用过一些参数向你发送很多这个消息,下面是文本消息的例子。
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
这是微信平台会发送给你的消息,其中fromUserName是一个参数,指的是用户微信唯一的标示符,应该用户的微信ID经过加密形成的串,因为它是唯一的,所以一般用用来做层级的标示符,也就是判断用户正在进入哪一级的菜单。ToUserName为公共平台的ID,CreateTime为消息产生的时间,MsgType为消息类型(即text消息是文本消息,如果是图片消息,则为image),Content为消息内容,指的是该消的实际内容,MsgId是该消息的唯一ID号。这个就是整个的消息组成体,他给你一个xml,自己解析出内容
InputStream is = request.getInputStream(); // 取出对应请求流的长度 int size = request.getContentLength(); byte[] buffer = new byte[size];//缓存数组 byte[] xmldataByte = new byte[size];//存放结果的数组 int count = 0; int rbyte = 0; // 循环读取 while (count < size) { // 每次实际读取长度存于rbyte中 rbyte = is.read(buffer); for(int i=0;i<rbyte;i++) { xmldataByte[count + i] = buffer[i]; } count += rbyte; } is.close(); //将传来的数据转换字符集 String requestStr =new
String(xmldataByte,
"UTF-8"
);
//数据读取完成 //获取xml中的参数 Document doc = DocumentHelper.parseText(requestStr); Element rootElt = doc.getRootElement(); String content = rootElt.elementText("Content"); String toUserName = rootElt.elementText("ToUserName"); String fromUserName = rootElt.elementText("FromUserName"); String msgType = rootElt.elementText("MsgType");
获取参数就完成了,这样,一个全面的用户发送来的消息就接受到了,是不是很容易?接收到消息过后就要开始处理消息,这个用您自己来定,根据您实际运用来处理。
(2)如何返回消息,做完消息的处理后,我们要对用户一个反馈,如何返回消息?其实是一样的
String responseStr = "<xml>"; responseStr += "<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>"; responseStr += "<FromUserName><![CDATA[" + toUserName + "]]></FromUserName>"; responseStr += "<CreateTime>" + System.currentTimeMillis() + "</CreateTime>"; responseStr += "<MsgType><![CDATA[text]]></MsgType>"; responseStr += "<Content>这里写要返回的具体内容</Content>"; responseStr += "<FuncFlag>0</FuncFlag>"; responseStr += "</xml>"; response.getWriter().write(responseStr);
在对应的地方,写上对应的内容就可以了,最好的是,把他封装成一个方法,或者类的静态方法,我自己就不做详细描述。
4.这样一个简单的微信公众平台就已经完成,从一开始的URL验证,到对用户的接发消息,形成一个完成的体系,当然吗,我的代码中比较混乱,没有形成一个比较结构化的封装,我是从我的代码中截取出来的,所以显得才如此,这个可以有大家去创造,在最后,我会附上自己源码的一个附件,是我出去的工程本身后的一个躯壳,大家填入自己东西就可以用了。还附上dom4j(用于解析xml的类库)的附件。
5.如果看了位置描述不理解,可以下载我上传的文件自己研究,我博客说没有提到,你有不太理解的,请联系我的邮箱987706386@qq.com,或者直接联系QQ也行。我尽量为大家解决问题,毕竟我已经做过了一些了解。谢谢。
相关推荐
主要介绍了java实现微信公众平台发送模板消息的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
以订单推送为例,主要为大家详细介绍了java实现微信公众号发送模版消息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Java实现微信公众平台开发项目源码,快速开发微信公众平台
微信公众平台的开发教程,用Java写的,挺有借鉴的意义
java 实现 微信公众平台开发 服务器与微信公众平台连接
科帮网Java实现微信公众平台开发项目源码.
微信公众平台深度开发JAVA版 1.课程研发环境 开发语言:JAVA WEBServer:TOMAT DATABASE:MySQL 开发工具:myeclipse、MySQL-Front等 其他:在手机应用中的CSS3+div布局、DWR、mybatis、gson、quartz、generator等 ...
非常好的JAVA开发微信公众平台的实例代码,代码包和类划分的比较合理,对出做微信公众平台开发帮助很大
微信公众平台 素材上传java实现demo
一直找不到一套整体的微信公众开发教学视频,今天给大家分享孔浩老师 一整套微信公众平台开发的视频教程,后台是用java语言写的。真心好东西,还有源码哦。
微信公众平台开发 java开发demo,有需要可自行下载研究
用JAVA做了一个简单微信公众平台的例子。
微信公众平台,开发者模式下的Java实现。实现菜单,自动回复,关注事件等!利用SpringMVC框架实现。如有疑问,可以关注我的博客~
资料来源于网络大神,一个微信公众平台开发的基本代码 java
微信公众平台开发教程Java版 微信公众平台开发教程Java版
java 微信公众平台应用开发:方法、技巧与案例,系统讲解微信公众平台应用开发的流程、方法和技巧。 注:与part1一起下载解压
基于Java Servlet的微信公众平台开发实训环境搭建.pdf
利用java实现微信公众平台接入,实现TOKEN验证,以及信息的回复接口实现。