Java--对接微信第二篇之初步开发
发布日期:2021-06-29 19:25:22
浏览次数:4
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月17日 13时15分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Sql server 内置函数实现md5加密
2019-04-30
Java 格式字符串的使用
2019-04-30
JavaScript 实现倒计时
2019-04-30
Java Map的遍历
2019-04-30
Android 计时器的实现
2019-04-30
Android AsyncTask 异步任务取消
2019-04-30
Asp.net 解决表单提交之后 页面刷新会再次提交表单
2019-04-30
解决js 写入中文乱码
2019-04-30
Java 把日期时间字符串 格式化为Date对象
2019-04-30
Java查找Map中的日期时间里当前时间最远
2019-04-30
安装openfire教程
2019-04-30
Android support v7 ActionBarActivity 过时
2019-04-30
Android Studio 导入第三方库
2019-04-30
Sql Server 查询一段日期内的所有礼拜天
2019-04-30
golang testing
2019-04-30
阅读protobuf-go代码
2019-04-30
golang反射基本准则
2019-04-30
2020-11-30-golang并发模式context
2019-04-30
知名定律摘要-持续更新
2019-04-30