----------------------疯狂软件java培训分享---------------------
广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软件年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士电话或者QQ咨询。
微信前好久就已经退出了自定义菜单的创建,并且这次不想以前一样还需要申请,一申请就需要好几天,这次只需要将你的微信公众平台申请成为服务号即可,既然说到这,那我我也顺便说说,服务号和订阅号到底有什么区别,服务号就是为大众说服务的,而订阅好着重为大众提供咨询,于是官方为了体现这两者的不同,就给了服务号自定义菜单的权利,而给了订阅号,每天一条主动推送的权利(服务号每月一条)。
好了,不废话了,今天主要教大家怎样去实现微信的自定义菜单,先大概介绍一下真个流程,首先我们通过申请服务号时得到的appid和appsecret来申请到ACCESS_TOKEN,然后通过ACCESS_TOKEN创建自定义菜单。
一。ACCESS_TOKEN,这个玩意是创建自定义菜单的核心
1.ACCESS_TOKEN是什么,是对应于公众号是全局唯一的票据,说白了,他是你访问微信服务器的临时凭据,证明你是一个服务号开发者。
2.怎样得到ACCESS_TOKEN?填写URL和TOKEN下面的地方的有appid和appsecret。java培训注意:(这两个东西,必须在申请为服务号过后才可以得到),在你的程序里,需要通过get方式获取https://api.weixin.qq.com/cgi-bin/token?
grant_type=client_credential&appid=APPID&secret=APPSECRET链接,里边的appid和appsecret是你自己申请服务号时得到的。结果会返回{"access_token":"ACCESS_TOKEN","expires_in":7200}
具体代码如下:
Java代码
StringBuffer bufferRes = new StringBuffer();
try { //这里填入你的appid和appsecret
URL realUrl = new URL("https://api.weixin.qq.com/cgi-bin/token?grant_"+
"type=client_credential&appid=?&secret=?");
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 读取超时 --服务器响应比较慢,增大时间,这个一般不会出现,不过写一写会比较好
conn.setReadTimeout(25000);
HttpURLConnection.setFollowRedirects(true);
// 设置请求方式
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.setDoInput(true);
//进行连接
conn.connect();
//获取并封装读入流
InputStream in = conn.getInputStream();
BufferedReader read = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String returnString = null;
//读出返回码
while ((returnString =read.readLine())!=null){
bufferRes.append(returnString );
}
String a = bufferRes.toString();
//从返回码中,获取到
Config.ACCESS_TOKEN = a.substring(17, a.length()-20);
in.close();
if (conn != null) {
// 关闭连接
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
如上述代码所示,我们就获取到了ACCESS_TOKEN,不过官方给出的说明是,这个ACCESS_TOKEN会在2小时后失效。返回格式里边的ACCESS_TOKEN就是我们所需要的了,所以我们直接截取从17至倒数20(不信你就去数一数)。特别注意:TOKEN和ACCESS_TOKEN是不同的两个东西,因为我在这上面犯过二,所以特别提醒一下,哈哈。
二。设置菜单
获取菜单ACCESS_TOKEN后,你可以干关于菜单的很多事情,你可以设置菜单,删除菜单,以及查询正在使用的菜单,相关的说明在“http://mp.weixin.qq.com/wiki/index.php?
title=自定义菜单接口”中有具体的说明。你们可以参详一下,我这里主要讲述一下关于创建的代码。具体代码如下:
Java代码
StringBuffer bufferRes = new StringBuffer();
try {
//这个URL是微信规定的格式,没什么好说的,其中的accessToken就是上面所讲到的获取到的ACCESS_TOKEN
URL realUrl = new URL("https://api.weixin.qq.com/cgi-bin/menu/create?
access_token="+ accessToken);
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
// 连接超时
conn.setConnectTimeout(25000);
// 读取超时 --服务器响应比较慢,增大时间
conn.setReadTimeout(25000);
Htt设置pURLConnection.setFollowRedirects(true);
// 设置请求方式,这里一定要是POST,原因去官网看去
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.connect();
// 获取URLConnection对象对应的输出流
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
// 发送请求参数
out.write();
out.flush();
out.close();
InputStream in = conn.getInputStream();
BufferedReader read = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String returnString= null;
while ((returnString=read.readLine())!=null){
bufferRes.append(returnString);
}
System.out.println(bufferRes.toString());
in.close();
if (conn != null) {
// 关闭连接
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
需要注意的是,其中的params就是自定义菜单的具体格式,并且这次的请求方式是POST,而不是GET,这次返回码只是告诉你菜单是否设置成功,不会告诉你错在哪里,如果你的返回码说你错了,那多数是因为你给的自定义菜单的格式有错误,关于自定义菜单的格式,我不得不承认确实看起来很复杂,还是自己多研究研究比较好,我这有一份模板,对照着看看,官网上有模板,自己多研究研究,这个真没什么好说的。
疯狂软件java培训、ios培训新年钜惠,报名Java就业班免费赠送java基础班,报名iOS就业班免费赠送iOS基础班,本月火速抢座中,为回报广大新老学员,值此新年之际推出报读就业班赠送基础班的活动
-----------------------------------2014年初活动--------------------------------------
疯狂软件Java学习班方向:
1.报读JavaEE就业班赠送基础班课程。
2.开班一次性(一个月内)交清JavaEE就业班学费,赠送基础班全套课程。
疯狂软件iOS学习班方向:
1.报读iOS应用+手游就业班赠送iOS基础班课程。
2.开班一次性(一个月内)交清iOS应用+手游就业班就业班学费,赠送基础班全套课程。