全局说明

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

本文说明

*本文分为五部分:
* 工具类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 
阅读(...) 
评论(...) 
编辑 
收藏

java微信开发API解析(四)-自己定义菜单以及个性化菜单实现的更多相关文章

  1. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  2. java微信开发API第一步 服务器接入

    I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ...

  3. Java微信开发_00_资源汇总贴

    1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(ht ...

  4. java微信开发

    所谓的微信开发就是在微信开发模式之下,对微信进行公众号和企业号的扩展开发.     如果要让你的微信公众号有更多的功能,比如菜单支持,自动的信息服务,查询,消息推送等,就必须开启微信的开发模式.进入微 ...

  5. 分享 Java微信开发SDK

    分享 Java微信开发SDK •发布于 4周前  •作者 朋也  •432 次浏览  •最后一次编辑是 2周前  •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin ...

  6. 微信开发 api 需要 https 服务器

    微信开发 api 需要 https 服务器 先建一个环境,本地的 https 服务器. 以下这篇不错,很完整. https://zhuanlan.zhihu.com/p/23640321

  7. 个人微信开发API协议(转)

    安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sd ...

  8. Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单

    在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介 ...

  9. Java微信开发_Exception_01_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is indirectly referenced from required .class files

    一.源码: package com.souvc.weixin.util; import java.io.InputStream; import java.io.Writer; import java. ...

随机推荐

  1. RGB颜色工具大全 and 网页配色方案

    RGB颜色工具:http://www.ostools.net/commons?type=3 配色方案:http://www.wzsky.net/html/Website/Color/103380.ht ...

  2. Block系列2:Block内存管理

    ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController { UIImag ...

  3. 倍福TwinCAT(贝福Beckhoff)应用教程13.2 TwinCAT控制松下伺服 CS说明

    虚拟仿真上,要注意仿真只是为了可视化,可以看到数据的变动是否和实际一致,所以Robot2D才是主要因素,虚拟仿真采集机器人的关节位置或者TCP位置来显示而已,为了测试一些别的算法,我们还可以在虚拟仿真 ...

  4. 使用Google-Authenticator加强serverSSH登录

    对于须要特殊加密的人群,我这里给出对应的方法来进行谷歌式加密. 过程例如以下: 准备: 首先在你的手机上准备好client(自己百度下载) 接下来依照命令做: date 查看系统时间       da ...

  5. Unity3D教程宝典之Web服务器篇:(第三讲)PHP的Hello World

    转载自风宇冲Unity3D教程学院 引言:PHP是比较简单的编程语言,即使没接触过的也可以现学现用.PHP教程文档PHP100视频教程                           Unity接 ...

  6. react 解决 setState 异步问题

    1.先保存,后调用 this.setState({ params },() => { this.getList(); }) .

  7. lodash 集合处理方法 map和filter区别

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  8. C#运用反射调用其他程序集中的代码

    加载程序集 AssMedicalAdvice = Assembly.LoadFrom(Path.Combine(Environment.CurrentDirectory, "Inscript ...

  9. Matlab、R向量与矩阵操作

    Matlab.R向量与矩阵操作   描    述 Matlab R 1 建立行向量v=[1 2  3 4] v=[1 2 3 4] v<-c(1,2,3,4)或v<-scan(),然后输入 ...

  10. 牛散NO.3:MACD放之四海 假作真时真亦假

    大宗商品日线“异曲同工夺命勾魂枪” 话说有实战意义的技术在任何资本市场里都能产生出神奇的效果.不能说放之四海皆准,但至少起到触类旁通的“牵强”吧.大宗商品特别是在国际市场交易的大宗 商品由于是来自各方 ...