微信公众号开发(五)

微信公众号开发

 

 第二章  创建菜单

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

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

原文地址:https://www.cnblogs.com/hooly/p/8039644.html