美文网首页
Springboot 技术整合--笔记11--微信公众号(二)之

Springboot 技术整合--笔记11--微信公众号(二)之

作者: 牵手生活 | 来源:发表于2019-06-19 22:58 被阅读0次

    微信开放文档

    微信开放平台--消息管理
    springboot框架开发微信公众号(二)之消息的接受与响应
    Springboot中使用Xstream进行XML与Bean 相互转换
    用idea 完成一个dom4j实例
    基于Spring Boot 和 WxJava 实现的微信公众号Java后端Demo,支持多公众号
    weixin-popular

    基于springboot+mybatis的微信公众号开发第三篇-消息的接收与回复 --message类
    微信公众号(三)之消息的使用以文本消息和图文消息为例
    Java微信公众平台开发(五)--文本及图文消息回复的实现--系列文章

    微信服务器在以xml的格式发送给进行公众号
    文本消息

    <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>
    

    参数 描述
    ToUserName 开发者微信号
    FromUserName 发送方帐号(一个OpenID)
    CreateTime 消息创建时间 (整型)
    MsgType 消息类型,文本为text
    Content 文本消息内容
    MsgId 消息id,64位整型

    在微信controller中添加接收数据打印

    
    @Api(tags = "get微信接入验证&接收微信Post过来的消息")
    @RestController//@Controller
    @RequestMapping("wechatTask")
    public class WechatPublic {
    
        private static Logger logger = LoggerFactory.getLogger(WechatPublic.class);
    
        /**
         * 启用开发者模式 会发来get请求,进行验证
         * @param request
         * @param response
         * @throws UnsupportedEncodingException
         */
        //@RequestMapping(value="/wx",method={RequestMethod.GET,RequestMethod.POST})
        @RequestMapping(value="/wx",method={RequestMethod.GET})
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
            //设置编码,不然接收到的消息乱码
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            String signature = request.getParameter("signature");//微信加密签名
            String timestamp = request.getParameter("timestamp");//时间戳
            String nonce = request.getParameter("nonce");//随机数
            System.out.println("随机数:"+nonce);
    
            String echostr = request.getParameter("echostr");//随机字符串
            PrintWriter out = null;
            //接入验证
            if (WeiXinUtil.checkSignature(signature, timestamp, nonce)) {  //校验成功,返回随机字符串
                if (echostr != null) {
                    System.out.println(echostr);
                    try {
                        out = response.getWriter();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    out.write(echostr);//验证成功返回的值
                    System.out.println("随机数:"+nonce);
                    return;
                }
            }
        }
    
    
    
        final String MsgType_text = "text";
    
        /**
         * 用来处理微信服务器转发过来的消息
         * @param request
         * @param response
         */
    
        @RequestMapping(value = "wx", method = RequestMethod.POST)
        // post方法用于接收微信服务端消息
        public void DoPost(HttpServletRequest request,HttpServletResponse response) {
            System.out.println("这是post方法!");
            try{
                Map<String, String> map=MessageUtil.parseXml(request);
                System.out.println("============================="+map.get("Content"));
    
                logger.info("打印微信服务器转发过来的消息map= {}",JSONObject.toJSONString(map));
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
    
    }
    
    
    用微信给公众号发消息 打印微信服务器发来的消息

    相关文章

      网友评论

          本文标题:Springboot 技术整合--笔记11--微信公众号(二)之

          本文链接:https://www.haomeiwen.com/subject/ifblqctx.html