java实现微信公众平台自定义菜单的创建示例_java

复制代码 代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.json.JSONObject;

public class MenuUtil {

 /**
  * 获得ACCESS_TOKEN
 * @Title: getAccess_token
 * @Description: 获得ACCESS_TOKEN
 * @param @return    设定文件
 * @return String    返回类型
 * @throws
  */
 private static String getAccess_token(){ 

  String APPID="";
  String APPSECRET="";

       String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ APPID + "&secret=" +APPSECRET;
       String accessToken = null;
      try {
             URL urlGet = new URL(url);
             HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();   

             http.setRequestMethod("GET");      //必须是get方式请求   
             http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");   
             http.setDoOutput(true);       
             http.setDoInput(true);
             System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//连接超时30秒
             System.setProperty("sun.net.client.defaultReadTimeout", "30000"); //读取超时30秒

             http.connect();

             InputStream is =http.getInputStream();
             int size =is.available();
             byte[] jsonBytes =new byte[size];
             is.read(jsonBytes);
             String message=new String(jsonBytes,"UTF-8");

             JSONObject demoJson = new JSONObject(message);
             accessToken = demoJson.getString("access_token");

             System.out.println(message);
             } catch (Exception e) {
                 e.printStackTrace();
             }
        return accessToken;
     }

 /**
  * 创建Menu
 * @Title: createMenu
 * @Description: 创建Menu
 * @param @return
 * @param @throws IOException    设定文件
 * @return int    返回类型
 * @throws
  */
    public static String createMenu() {
      String menu = "{\"button\":[{\"type\":\"click\",\"name\":\"MENU01\",\"key\":\"1\"},{\"type\":\"click\",\"name\":\"天气查询\",\"key\":\"西安\"},{\"name\":\"日常工作\",\"sub_button\":[{\"type\":\"click\",\"name\":\"待办工单\",\"key\":\"01_WAITING\"},{\"type\":\"click\",\"name\":\"已办工单\",\"key\":\"02_FINISH\"},{\"type\":\"click\",\"name\":\"我的工单\",\"key\":\"03_MYJOB\"},{\"type\":\"click\",\"name\":\"公告消息箱\",\"key\":\"04_MESSAGEBOX\"},{\"type\":\"click\",\"name\":\"签到\",\"key\":\"05_SIGN\"}]}]}";

        //此处改为自己想要的结构体,替换即可
        String access_token= getAccess_token();

        String action = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+access_token;
        try {
           URL url = new URL(action);
           HttpURLConnection http =   (HttpURLConnection) url.openConnection();   

           http.setRequestMethod("POST");       
           http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");   
           http.setDoOutput(true);       
           http.setDoInput(true);
           System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//连接超时30秒
           System.setProperty("sun.net.client.defaultReadTimeout", "30000"); //读取超时30秒

           http.connect();
           OutputStream os= http.getOutputStream();   
           os.write(menu.getBytes("UTF-8"));//传入参数   
           os.flush();
           os.close();

           InputStream is =http.getInputStream();
           int size =is.available();
           byte[] jsonBytes =new byte[size];
           is.read(jsonBytes);
           String message=new String(jsonBytes,"UTF-8");
           return "返回信息"+message;
           } catch (MalformedURLException e) {
               e.printStackTrace();
           } catch (IOException e) {
               e.printStackTrace();
           }   
        return "createMenu 失败";
   }

    /**
     * 删除当前Menu
    * @Title: deleteMenu
    * @Description: 删除当前Menu
    * @param @return    设定文件
    * @return String    返回类型
    * @throws
     */
   public static String deleteMenu()
   {
       String access_token= getAccess_token();
       String action = "https://api.weixin.qq.com/cgi-bin/menu/delete? access_token="+access_token;
       try {
          URL url = new URL(action);
          HttpURLConnection http =   (HttpURLConnection) url.openConnection();   

          http.setRequestMethod("GET");       
          http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");   
          http.setDoOutput(true);       
          http.setDoInput(true);
          System.setProperty("sun.net.client.defaultConnectTimeout", "30000");//连接超时30秒
          System.setProperty("sun.net.client.defaultReadTimeout", "30000"); //读取超时30秒

          http.connect();
          OutputStream os= http.getOutputStream();   
          os.flush();
          os.close();

          InputStream is =http.getInputStream();
          int size =is.available();
          byte[] jsonBytes =new byte[size];
          is.read(jsonBytes);
          String message=new String(jsonBytes,"UTF-8");
          return "deleteMenu返回信息:"+message;
          } catch (MalformedURLException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
       return "deleteMenu 失败";  
   }
 public static void main(String[] args) {

  System.out.println(createMenu());
 }
}

时间: 2024-09-29 17:08:32

java实现微信公众平台自定义菜单的创建示例_java的相关文章

微信公众平台自定义菜单及高级接口PHP SDK

本文介绍介绍微信公众平台自定义菜单及高级接口的PHP SDK及使用方法.   作者 方倍工作室 修正记录: 2014.05.03 v1.0   方倍工作室 http://www.cnblogs.com/txw1958/ SDK 源码: 1 /* 2 方倍工作室 http://www.cnblogs.com/txw1958/ 3 CopyRight 2014 www.doucube.com All Rights Reserved 4 */ 5 6 class class_weixin_adv 7

Python实现微信公众平台自定义菜单实例_python

首先先获取access_token,并保存与全局之中 def token(requset): url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s' % ( Config.AppID, Config.AppSecret) result = urllib2.urlopen(url).read() Config.access_token = json.load

微信公众平台自定义菜单开发示例

 腾讯微信3月19日正式公布公众平台自定义菜单功能.目前该功能仅提供给企业和机构,且内测资格需要申请.对于这一新增功能,目前仅有少数账号已经开通.至此,微信的商业化价值被进一步挖掘出来.   开发示例-公众平台自定义菜单">     开发者可利用该功能为公众账号的会话界面底部增加自定义菜单.用户点击菜单中的选项,可以调出相应的回复信息或网页链接. 菜单创建接口说明 通过POST一个特定结构体,实现在微信客户端创建自定义菜单. 请求说明 http请求方式:POST https://api.w

微信公众平台自定义菜单接口API指南

微信公众平台开发模式自定义菜单接口API指南  开发实现方法,请查看  微信公众平台开发(58)自定义菜单   简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和删除等操作. 自定义菜单接口可实现以下类型按钮: click(点击事件): 用户点击click类型按钮后,微信服务器会通过消息接口(event类型)推送点击事件给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值进行消息回复. 创建自定义菜单后,由于微信客户端缓存,需

微信公众平台自定义菜单接口开发(1)

 微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 服务号 自定义菜单接口API 作者:方倍工作室原文:http://www.cnblogs.com/txw1958/archive/2013/04/19/weixin-menu1.html   一.获取权限 自定义菜单接口目前处于内测阶段,需要向腾讯官方申请权限.通过权限的账号将获得到appid和appsecret 然后通过appid和appsecret获取access_token https://api.weixin.qq.com/c

微信公众平台自定义菜单新增扫一扫、发图片、发位置 LBS运作更便捷

今天微信公众平台发布更新,自定义菜单新增扫一扫.发图片.发送位置等功能,这对于有意挖掘微信LBS服务的运营者来说更便捷了,订阅号不用返回微信界面就能扫图.发送图片.调用地理位置,用户体验更友好,自然也提高了黏度,对涨粉也好一些.详细能力如下: 公众号自定义菜单新增扫一扫.发图片.发位置功能 1. 扫码推送事件 用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息. 2. 扫码推送事件,且弹出"消息接收

微信公众平台 自定义菜单创建失败

问题描述 "{"errcode":40016,"errmsg":"invalidbuttonsize"}"这种方式传值:publicstaticstringPost(stringurl,stringpostData){WebClientclient=newWebClient();UrinewUri;newUri=newUri(url);client.Encoding=Encoding.UTF8;stringresult=cli

java-谁能给以个JAVA开发微信公众平台JSSDK使用的教程

问题描述 谁能给以个JAVA开发微信公众平台JSSDK使用的教程 谁能给以个JAVA开发微信公众平台JSSDK使用的教程, 以前没接触过 自己研究又时间太紧 跪求一个教程!!! 解决方案 java微信公众平台开发教程分享微信公众平台开发教程Java版(六) 事件处理(菜单点击/关注/取消关注)微信公众平台开发教程Java版(一)环境准备篇---------------------- 解决方案二: 到微信公众平台开发者中心查阅相关资料 解决方案三: 官方去找例子吧,这样的资料好少,也可以问官方的客

微信公众平台自定义,下一步打破消息次数限制?

2月12日消息,自面向开发者和第三方平台开放微信内网页开发工具包(JS-SDK),允许接入微信小店.微信支付等多达11类的接口集,并且向认证的服务号和订阅号开放公众平台的客服功能,以及帮助公众号把客服系统搬到微信上后,微信公众平台进一步放开基础能力,将对所有公众号开放"自定义菜单"功能.平台管理者在后台点击"添加功能插件"后,选择右下角的"自定义菜单"卡片即可申请开通插件. 微信自定义菜单   根据微信平台提供的消息,与之前开发的"自定