Java微信公众号开发之自定义菜单

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fighting_sxw/article/details/79267549

自定义菜单官方文档

自定义菜单接口可实现的按钮类型

  1. click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
  2. view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

官方一共给出10种类型,剩下类型请参阅官方文档

接口调用请求说明

http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

click和view的官方请求示例:

 {
     "button":[
     {    
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           {    
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
                 "type":"miniprogram",
                 "name":"wxa",
                 "url":"http://mp.weixin.qq.com",
                 "appid":"wx286b93c14bbf93aa",
                 "pagepath":"pages/lunar/index"
             },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }

简单点说就是把上面的JSON数据以POST方式推送到请求的URL中即可。

下面是Java实现的代码,以click为例:
现在本地新建一个JSON文件:

{
    "button":[
        {
            "type":"scancode_push",
            "name":"扫一扫",
            "key":"SCAN_QRCODE"
        },
        {
            "type":"click",
            "name":"关于我们",
            "key":"ABOUT_US"
        },
        {
            "type":"click",
            "name":"联系我们",
            "key":"CONTACT_US"
        }
    ]
}

Java代码:

public static void CreatMenu(){
        getToken();

        HttpURLConnection conn=null;
        try{
            File file=new File("C:\\Users\\Administrator\\Desktop\\WeChat\\公众号\\menu.json");
            FileInputStream fin=new FileInputStream(file);
            String menuJson=IOUtil.readJson2String(fin);
            String URL="https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+access_token;
            System.out.println(URL);
            URL url = new URL(URL);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");  
            conn.setRequestProperty("Content-Type","application/json");  
            conn.setDoOutput(true);  
            conn.setDoInput(true);  
//            System.out.println(menuJson);
            OutputStream os= conn.getOutputStream();
            os.write(menuJson.getBytes("UTF-8"));
            os.flush();
            os.close();
            if(HttpURLConnection.HTTP_OK==conn.getResponseCode()){
                InputStream in=conn.getInputStream();
                String reStr=IOUtil.readString(in);
                System.out.println("返回:"+reStr);
            }   
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            conn.disconnect();
        }
    }
展开阅读全文

没有更多推荐了,返回首页