• 微信公众号开发(五)


    微信公众号开发

     

     第二章  创建菜单

    1.字定义回复主菜单:

      1.回复文本消息:

        

      2.回复单图文消息:

        

      3.回复多图文消息:

        

      4.回复单图片和回复音频:

        

    2.Java后台处理逻辑:

      /**
         * 后台返回给微信
         */
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter out = resp.getWriter();//后台返回给微信页面的方法
            
            try {
                Map<String, String> map = MessageUtil.xmlToMap(req);//获取消息到集合中
                //获取参数
                String toUserName = map.get("ToUserName");
                String fromUserName = map.get("FromUserName");
                String msgType = map.get("MsgType");
                String content = map.get("Content");
                
                String message = null;
                //根据msgType判断消息类型
                if(MessageUtil.MESSAGE_EVENT.equals(msgType)){  //事件推送
                    String eventType = map.get("Event");//获取事件推送中的具体事件类型
                    if(MessageUtil.MESSAGE_SUBSCRIBE.equals(eventType)){   //关注
                        message = MessageUtil.initText(toUserName, fromUserName, MessageUtil.menuText());//关注推送
                    }else if(MessageUtil.MESSAGE_CLICK.equals(eventType)){  //click按钮点击回复
                        message = MessageUtil.initNewsMessage(toUserName, fromUserName);
                    }else if(MessageUtil.MESSAGE_VIEW.equals(eventType)){  //view类型按钮
                        String url = map.get("EventKey");//得到url
                        //message = MessageUtil.initText(toUserName, fromUserName, url);//回复一个url
                    }else if(MessageUtil.MESSAGE_SCANCODE.equals(eventType)){  //扫码类型按钮
                        String key = map.get("EventKey");
                        //message = MessageUtil.initText(toUserName, fromUserName, key);//回复一个key值
                    }
                    
                    System.out.println(message);
                    out.print(message);
                }else if(MessageUtil.MESSAGE_LOCATION.equals(msgType)){ //地理位置回复
                    String label = map.get("Label");
                    message = MessageUtil.initText(toUserName, fromUserName, label);//回复一个地理位置
                    
                    System.out.println(message);
                    out.print(message);
                }
            } catch (DocumentException e) {
                e.printStackTrace();
            }finally{
                out.close();
            }
         }

    以上几章基本上涵盖了微信公众号几个常用的模块,都是demo的形式展现出来,实际项目需要的话可以在此基础上修改完善。

    码字不易,还请诸位看官多多赐教啊。。

  • 相关阅读:
    二十三、java连接oracle数据库操作:jdbc
    四、正则表达式使用
    Linux常用命令大全
    消息队列的常见问题
    JVM:带你查看常见的问题,以及分析处方法
    JVM监控与调优
    缓存总结2
    缓存总结1
    消息队列mq总结
    Java集合Map基本方法
  • 原文地址:https://www.cnblogs.com/hooly/p/8039644.html
Copyright © 2020-2023  润新知