全局说明

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

本文说明

*本文分为五部分:
* 工具类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

posted on
2017-07-27 20:06 
lxjshuju 
阅读(...) 
评论(...) 
编辑 
收藏

最新文章

  1. Sality.m分析
  2. 第2月第24天 coretext 行高
  3. .net core学习笔记(3)-依赖注入
  4. SQL 分页
  5. HTML5+JS 《五子飞》游戏实现(七)游戏试玩
  6. hive中大表join
  7. 让你的APP支持iPhone5
  8. 访问修饰符internal
  9. Java科普之基础知识回顾
  10. hdu 4741 Save Labman No.004 [2013年杭州ACM网络赛]
  11. centos6 搭建hdwiki
  12. 新篇章之我的java学习之路上
  13. c#字符编码,System.Text.Encoding类,字符编码大全:如Unicode编码、GB18030、UTF-8,UTF-7,GB2312,ASCII,UTF32,Big5
  14. poj 2769 Reduced ID Numbers 同余定理
  15. TCP-IP详解学习笔记2
  16. Leaf——美团点评分布式ID生成系统 UUID &amp; 类snowflake
  17. c#利用ApplicationContext类 同时启动双窗体的实现
  18. jdk1.8 HashMap扩容原理详解
  19. ThinkPHP 框架2.1,2.2和3.0版本开启lite模式导致URL命令执行漏洞
  20. 给tkinter文本框添加右键菜单

热门文章

  1. pycharm2016序列号失效问题解决办法
  2. python抓取360百科踩过的坑!
  3. Android Handler,Loop,HandlerThread消息处理
  4. 报错:numRecords must not be negative
  5. vue2计算属性computed
  6. [iOS]在NavigationController中的ScrollView中的子视图都会下移64个像素
  7. 04-常见内存错误以及valgrind使用
  8. NullPointerException异常的原因及java异常??
  9. java 发送html邮件,苹果或者某些邮件客户端收到的内容为空白解决方案
  10. Photoshop之学习笔记(2) - 常用快捷键