zoukankan      html  css  js  c++  java
  • java实现微公众平台自定义菜单

         ----------------------疯狂软件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应用+手游就业班就业班学费,赠送基础班全套课程。

  • 相关阅读:
    VCL源码修改立即生效
    让C++控制台程序停下来,实现暂停功能
    Ubuntu系统中初次下载Android源码的一点经验
    理解SetCapture、ReleaseCapture、GetCapture(控制了消息发往哪个窗口,即消息窗口)
    又发现2个高人写的Delphi图文并茂的消息研究
    0x0118消息就是WM_SYSTIMER
    QT信号槽与Delphi事件的对比
    使用VS2005安装和编译QT4.53源码
    使用SmsManager服务群发短信
    减小VirtualBox虚拟硬盘文件的大小
  • 原文地址:https://www.cnblogs.com/gojava/p/3528502.html
Copyright © 2011-2022 走看看