Java--对接微信第二篇之初步开发
发布日期:2021-06-29 19:25:22
浏览次数:3
分类:技术文章
本文共 2768 字,大约阅读时间需要 9 分钟。
环境有了,接下来就是在java代码中对接环境。
1、新写一个Controller:命名WXController.java
/** * 接入开发走这个GET */ @RequestMapping(value = "/validate", method = RequestMethod.GET) public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { //接收微信用来校验信息的内置规定参数 String signature = request.getParameter("signature"); String timestamp = request.getParameter("timestamp"); String nonce = request.getParameter("nonce"); String echostr = request.getParameter("echostr"); PrintWriter out = response.getWriter(); //按微信指定的规则进行校验并做出响应 if(CheckSignatureUtil.checkSignature(signature, timestamp, nonce)){ out.print(echostr); } } /** * 配置RequestMethod.POST,用于接收处理消息 */ @RequestMapping(value = "/validate", method = RequestMethod.POST) public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException{ request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); String message = "success"; try { //把微信返回的xml信息转义成map Mapmap = XmlUtil.xmlToMap(request); String fromUserName = map.get("FromUserName");//消息来源用户标识 String toUserName = map.get("ToUserName");//消息目的用户标识 String msgType = map.get("MsgType");//消息类型 String content = map.get("Content");//消息内容 String eventType = map.get("Event"); if(MessageUtil.REQ_MESSAGE_TYPE_EVENT.equals(msgType)){//如果为事件类型 if(MessageUtil.EVENT_TYPE_SUBSCRIBE.equals(eventType)){//处理订阅事件 message = MessageUtil.subscribeForText(toUserName, fromUserName); } } } catch (DocumentException e) { e.printStackTrace(); }finally{ out.println(message); if(out!=null){ out.close(); } } } /** * 获取access_token * @param appid * @param secret * @return */ private Token checkToken(String appid,String secret){ Token token = (Token)redisService.getObject(appid); if (token==null){ token = TokenAPI.token(appid,secret); if(token!=null){ redisService.setObject(appid,token); redisService.expire(appid,7100); } }else{ logger.info("redis have token,appid ="+appid); } return token; }
其中,这个WXController.java下的validate有两个方法,一个get、一个post,get是判断为微信官方操作调用,post是具体做什么,比如监听到用户订阅你的公众号,那么就回复:感谢你的订阅(或其他消息)
获取token,是调用微信接口时,不可缺少的一步,这个token不是第一篇的token,而是临时令牌,根据你的appid和AppSecret获取,调用微信api获取:获取后微信会帮你存7200秒,你把这个token存进redis,因为这个接口有次数限制的,别老是去重新获取token
转载地址:https://dada-superman.blog.csdn.net/article/details/83653454 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月12日 14时46分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
编程要趁早 BI推荐8个编程学习网站
2019-04-30
《c primer plus》
2019-04-30
第一个服务器程序
2019-04-30
源代码学习笔记
2019-04-30
vxworks下select()的使用 .
2019-04-30
如何在使用Cocos2D中实现A星(A*)寻路算法
2019-04-30
iOS应用崩溃日志分析
2019-04-30
报文数据的txt文件 转换成wireshark可以识别的k12文件
2019-04-30
vue 大致总结一
2019-04-30
python面试总结 python同源策略 跨域问题(一)
2019-04-30
django中HttpResponse render redirect 使用和区别
2019-04-30
MySQL数据库的详细安装步骤
2019-04-30
python 基础 爬虫音乐资源案例
2019-04-30
python基础爬虫 视频的下载
2019-04-30
python中把图片 或者 数据存储到本地 用csv方式储存
2019-04-30
python中csv格式转换为excle格式
2019-04-30
爬取图片下载保存 例子详解 代码与注释
2019-04-30
python 在安装第三方库时候 怎样使用国内镜像源 实现快速下载
2019-04-30
python 爬取龙岭迷窟视频 对于视频格式m3u8 下载多个ts文件 合并成MP4
2019-04-30