zoukankan      html  css  js  c++  java
  • 微信公众号开发(五)

    微信公众号开发

     

     第二章  创建菜单

    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的形式展现出来,实际项目需要的话可以在此基础上修改完善。

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

  • 相关阅读:
    C#学生管理系统/学习
    ESC socket通信不通问题
    JavaWeb/ No 'Access-Control-Allow-Origin' header is present on the requested resource
    JavaWeb/ forward跳转到jsp页面后出现中文乱码问题
    JavaWeb/ MVC模式的初次实践
    docker搭建常用应用以及遇到的坑
    突验 8 进程通信
    实验七 信号
    实验6进程基础
    实验5 shell脚本编程
  • 原文地址:https://www.cnblogs.com/hooly/p/8039644.html
Copyright © 2011-2022 走看看