zoukankan      html  css  js  c++  java
  • 4、自定义菜单

    1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。

    2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。

    3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。

    1、获取access_token     详情参看:  https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

          access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

    公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。

    2、创建菜单          详情参看: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013

    HttpUtil 工具类

    package com.wenxi.utils;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.nio.charset.Charset;
    import org.springframework.util.StreamUtils;
    import org.springframework.util.StringUtils;
    
    /**
     * Http工具类
     *
     */
    public class HttpUtil {
    
    	/**
    	 * 发送get请求
    	 *
    	 * @throws Exception
    	 */
    	public static String get(String url) {
    
    		String result = "";
    		InputStream in = null;
    		try {
    			// 打开和URL之间的连接
    			HttpURLConnection conn = (HttpURLConnection) new URL(url)
    					.openConnection();
    			// 设置通用的请求属性
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestProperty("Content-Type", "application/json");
    			conn.setRequestProperty("Accept", "application/json");
    			conn.setRequestMethod("GET");
    			// 建立实际的连接
    			conn.connect();
    			// 定义输入流来读取URL的响应
    			in = conn.getInputStream();
    			result = StreamUtils.copyToString(in, Charset.forName("utf-8"));
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (in != null) {
    				try {
    					in.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		return result;
    	}
    
    	/**
    	 * 发送post请求
    	 *
    	 * @throws Exception
    	 */
    	public static String post(String url, String paramStr) {
    		InputStream in = null;
    		OutputStream os = null;
    		String result = "";
    		try {
    			// 打开和URL之间的连接
    			HttpURLConnection conn = (HttpURLConnection) new URL(url)
    					.openConnection();
    			// 设置通用的请求属性
    			conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			// 发送POST请求须设置
    			conn.setRequestMethod("POST");
    			conn.setDoOutput(true);
    			conn.setDoInput(true);
    			os = conn.getOutputStream();
    			// 注意编码格式,防止中文乱码
    			if (StringUtils.hasText(paramStr)) {
    				os.write(paramStr.getBytes("utf-8"));
    				os.close();
    			}
    			in = conn.getInputStream();
    			result = StreamUtils.copyToString(in, Charset.forName("utf-8"));
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (os != null) {
    					os.close();
    				}
    				if (in != null) {
    					in.close();
    				}
    			} catch (IOException ex) {
    				ex.printStackTrace();
    			}
    		}
    		return result;
    	}
    
    }
    WeixinUtil 类
    package com.wenxi.utils;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    import java.util.Date;
    
    public class WeixinUtil {
    
        public static final String TOKEN = "****"; //改为自己的
    
        public static final String APPID = "****";//改为自己的
    
        public static final String APPSECRET = "****";//改为自己的
    
        public static final String CREATE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
    
        public static final String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
    
        public static String ACCESSTOKEN = null;
    
        //ACCESSTOKEN 的失效时间
        public static long EXPIRESTIME;
    
        /**
         * 获取accessToken
         */
        public static  final String  getAccessToken(){
    
            if (ACCESSTOKEN == null || EXPIRESTIME < new Date().getTime()) {
                String result = HttpUtil.get(GET_ACCESS_TOKEN_URL.replace("APPID",APPID).replace("APPSECRET",APPSECRET));
                System.out.println(result);
                JSONObject json = JSON.parseObject(result);
                //设置ACCESSTOKEN
                ACCESSTOKEN = json.getString("access_token");
                //设置ACCESSTOKEN的失效时间
                Long expires_in = json.getLong("expires_in");
                EXPIRESTIME = new Date().getTime() + (expires_in-60) * 1000; //提前一分钟刷新
            }
            return ACCESSTOKEN;
        }
    
        /**
         * 创建菜单
         * @param url
         * @param params
         */
        public static  final void createMunu(String url, String params){
    
            String result = HttpUtil.post(url,params);
            System.out.println(result);
        }
    
        public  static void main(String[] args){
            getAccessToken();
            String url = CREATE_MENU_URL.replace("ACCESS_TOKEN",getAccessToken());
            String params = "{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC"},{"name":"菜单","sub_button":[{	"type":"view","name":"搜索","url":"http://www.soso.com/"},"
                    +"{"type":"click","name":"赞一下我们","key":"V1001_GOOD"}]}]}";
            createMunu(url,params);
        }
    }
    

    运行main函数,再重新关注就可以看到菜单,如下图:

    S71024-200958

    这里的菜单配置params 可以通过后台管理页面设置,然后应用通过查询数据库来获取,进而createMunu(String url, String params)来创建菜单

  • 相关阅读:
    iperf简单说明
    计算后图像大小参数计算
    ipywidgets安装报错
    Cannot uninstall [pacakage]. It is a distutils installed project
    torch
    es-centos7安装注意细节
    jupyter 指定特定的环境
    未来方向
    深度学习过拟合处理
    归一化
  • 原文地址:https://www.cnblogs.com/weiapro/p/7725502.html
Copyright © 2011-2022 走看看