zoukankan      html  css  js  c++  java
  • java微信开发API解析(四)-自己定义菜单以及个性化菜单实现

    全局说明

    * 具体说明请參考前两篇文章。
    

    本文说明

    *本文分为五部分:
        * 工具类AccessTokenUtils的封装
        * 自己定义菜单和个性化菜单文档的阅读解析
        * 菜单JSON的分析以及构建相应bean
        * 自己定义菜单的实现
        * 个性化菜单的实现
    *  微信自己定义菜单全部类型菜单都给出演示
    * 本文结束会给出包含本文前四篇文章的全部演示源代码
    

    工具类AccessTokenUtils的封装

    • 在上文中关于AccessToken的获取和定时保存已经具体介绍过,此处直接给出处理过之后封装的AccessTokenUtils,实现原理以及文档阅读不再给出。
    • AccessTokenUtils.java

      package com.gist.utils;
      
      import java.io.File;
      import java.io.FileInputStream;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.io.InputStreamReader;
      import java.net.URL;
      
      import javax.net.ssl.HttpsURLConnection;
      
      import com.gist.bean.Access_token;
      import com.google.gson.Gson;
      
      /**
       * @author 高远</n> 邮箱:wgyscsf@163.com</n> 博客 http://blog.csdn.net/wgyscsf</n>
       *         编写时期 2016-4-7 下午5:44:33
       */
      public class AccessTokenUtils {
          private static final long MAX_TIME = 7200 * 1000;// 微信同意最长Access_token有效时间(ms)
          private static final String TAG = "WeixinApiTest";// TAG
          private static final String APPID = "wx889b020b3666b0b8";// APPID
          private static final String SECERT = "6da7676bf394f0a9f15fbf06027856bb";// 秘钥
      
          /*
           * 该方法实现获取Access_token、保存而且仅仅保存2小时Access_token。假设超过两个小时又一次获取;假设没有超过两个小时,直接获取。该方法依赖
           * :public static String getAccessToken()。
           * 
           * 思路:将获取到的Access_token和当前时间存储到file里,
           * 取出时推断当前时间和存储里面的记录的时间的时间差,假设大于MAX_TIME,又一次获取,而且将获取到的存储到file替换原来的内容
           * ,假设小于MAX_TIME。直接获取。

      */ // 为了调用不抛异常,这里全部捕捉异常,代码有点长 public static String getSavedAccess_token() { Gson gson = new Gson();// 第三方jar,处理json和bean的转换 String mAccess_token = null;// 须要获取的Access_token; FileOutputStream fos = null;// 输出流 FileInputStream fis = null;// 输入流 File file = new File("temp_access_token.temp");// Access_token保存的位置 try { // 假设文件不存在。创建 if (!file.exists()) { file.createNewFile(); } } catch (Exception e1) { e1.printStackTrace(); } // 假设文件大小等于0。说明第一次使用。存入Access_token if (file.length() == 0) { try { mAccess_token = getAccessToken();// 获取AccessToken Access_token at = new Access_token(); at.setAccess_token(mAccess_token); at.setExpires_in(System.currentTimeMillis() + "");// 设置存入时间 String json = gson.toJson(at

  • 相关阅读:
    定时刷新
    Codesmith生成oracle、mssql模版中的部分区别和基本功能备忘
    oracle使用中遇到的问题备忘
    存储过程内建临时表和临时函数,合并一个由存储过程返回的表
    烂MP3
    别人笑我太疯癫,我笑别人看不穿
    服务器被挂Iframe木马的解决方法(不是IIS映射修改,也不是ARP病毒,并且网页文件源代码里没有iframe代码的解决方法)
    随便记录下
    重构桌面飘着圣诞老人,利用策略模式和改造的代理模式让软件完全实现开闭原则,欢迎下载源代码分析
    Nhibernate连接oracle数据库报 Could not compile the mapping document异常的解决方法
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7246861.html
Copyright © 2011-2022 走看看