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
java微信开发API解析(四)-自己定义菜单以及个性化菜单实现的更多相关文章
- java微信开发API解析(二)-获取消息和回复消息
		java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ... 
- java微信开发API第一步 服务器接入
		I如何接入服务器,下面就为大家进行介绍 一.说明 * 本示例根据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/2016 5:34 ... 
- Java微信开发_00_资源汇总贴
		1.微信公众平台技术文档(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432) 2.微信企业号开发接口文档(ht ... 
- java微信开发
		所谓的微信开发就是在微信开发模式之下,对微信进行公众号和企业号的扩展开发. 如果要让你的微信公众号有更多的功能,比如菜单支持,自动的信息服务,查询,消息推送等,就必须开启微信的开发模式.进入微 ... 
- 分享 Java微信开发SDK
		分享 Java微信开发SDK •发布于 4周前 •作者 朋也 •432 次浏览 •最后一次编辑是 2周前 •来自 分享 给大家分享两个java开发微信公众号的sdk jfinal-weixin ... 
- 微信开发 api 需要 https 服务器
		微信开发 api 需要 https 服务器 先建一个环境,本地的 https 服务器. 以下这篇不错,很完整. https://zhuanlan.zhihu.com/p/23640321 
- 个人微信开发API协议(转)
		安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sd ... 
- Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单
		在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介 ... 
- 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. ... 
随机推荐
- http://www.binghe.org/2010/03/use-httpsurlconnection-in-java/
			http://www.binghe.org/2010/03/use-httpsurlconnection-in-java/ 
- Laravel 5系列教程四:数据库和Eloquent
			免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇写了一些Laravel Blade的基本用法和给视图传递变量的几种方式, 这一节我们来说说 ... 
- Hadoop之Hbase详解
			1.什么是Hbase HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统, hbase是列式的分布式数据库 1.2.HBASE优势: 1)线性扩展,随着数据量增多可以通过节点扩展进行支撑 ... 
- 阻止 gulp 发生异常后退出
			gulp-plumber 可以阻止 gulp 插件发生错误导致进程退出并输出错误日志. 
- MS  project 使用小技巧收集
			如何使用的url: http://www.cnblogs.com/wangfupeng1988/p/3648994.html (好文,易上手) 一. 如何设置周末为工作日. 1. 在 “工具”-& ... 
- HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
			Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ... 
- Java并发包——Blockingqueue,ConcurrentLinkedQueue,Executors
			背景 通过做以下一个小的接口系统gate,了解一下mina和java并发包里的东西.A系统为javaweb项目,B为C语言项目,gate是本篇须要完毕的系统. 需求 1. A为集群系统,并发较高,会批 ... 
- wireshark过滤语法总结 (转载)
			做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ... 
- Easy UI datebox控件无法正常赋值
			<input id="AcceptDetail_IssuingDate" class="easyui-datebox" data-options=&quo ... 
- Android Framework 分析---2消息机制Native层
			在Android的消息机制中.不仅提供了供Application 开发使用的java的消息循环.事实上java的机制终于还是靠native来实现的.在native不仅提供一套消息传递和处理的机制,还提 ... 
