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            Map
map = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java--对接微信第三篇之订阅发送图文消息给用户
下一篇:Java--对接微信第一篇

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月12日 14时46分12秒