微信开发——2、代码模式下创建菜单

原创 2016年08月30日 19:50:34

其实开发微信难度并不大,因为微信公众平台提供文档已经很详细了,难就难在要耐心看懂文档


代码创建菜单

这里说的代码创建的意思是执行一次就保存到微信官方的服务器中,像这样的还有其他的功能,比如上传素材,具体的可以看微信官网的《开发者文档》(登录——(左侧菜单)开发者工具——开发文档)。

步骤1 获取access_token(全局唯一接口调用凭据)

具体文档位置:在开发者文档——开始开发——获得access_token,其中最有用的一句是

http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

输入自己的appid与secret,然后以任何编程方式访问这个网址(测试的话可以直接用浏览器获取,java的话使用HttpURLConnection即可)就能获得access_token。但是一个access_token过一段时间会过期,具体看文档。


步骤2 创建菜单

具体文档位置:在开发者文档——自定义菜单——自定义菜单创建接口,同样是连接URL然后用POST的格式发送一段代码,微信官方服务器会根据我们发送的代码建立我们想要的菜单。

要注意数据包装

数据包装代码如下

/*
 JSON格式
*/
public static JSONObject getJSON() {
        // TODO Auto-generated method stub

        JSONObject jo_button1 = new JSONObject();
        jo_button1.put("type", "click");
        jo_button1.put("name", "今日歌曲");
        jo_button1.put("key", "V1001_TODAY_MUSIC");

        JSONArray ja_zong = new JSONArray();
        ja_zong.add(jo_button1);

        JSONObject jo_zong = new JSONObject();
        jo_zong.put("button", ja_zong.toString());
        System.out.println(jo_zong.toString());
        return jo_zong;
    }


/*
  字符串格式
*/
String menu = "{\"button\":[{\"type\":\"view\",\"name\":\"按钮1\",\"url\":\"http://www.baidu.com\"},{\"type\":\"view\",\"name\":\"按钮2\",\"url\":\"http://www.baidu.com\"}]}";

用java发送包装好的数据

public static void main(String[] args) {
        try {
            String pathUrl = "这里填写完整的微信接口URL";
            // 建立连接
            URL url = new URL(pathUrl);
            HttpURLConnection httpConn = (HttpURLConnection) url
                    .openConnection();

            // //设置连接属性
            httpConn.setDoOutput(true);// 使用 URL 连接进行输出
            httpConn.setDoInput(true);// 使用 URL 连接进行输入
            httpConn.setUseCaches(false);// 忽略缓存
            httpConn.setRequestMethod("POST");// 设置URL请求方法
            String requestString = Test.getJSON().toString();


            // 获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
            byte[] requestStringBytes = requestString.getBytes("UTF-8");
            httpConn.setRequestProperty("Content-length", ""+ requestStringBytes.length);
            httpConn.setRequestProperty("Content-Type",
                    "application/octet-stream");
            httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
            httpConn.setRequestProperty("Charset", "UTF-8");

            // 建立输出流,并写入数据
            OutputStream outputStream = httpConn.getOutputStream();
            outputStream.write(requestStringBytes);
            outputStream.close();
            // 获得响应状态
            int responseCode = httpConn.getResponseCode();

            if (HttpURLConnection.HTTP_OK == responseCode) {// 连接成功
                // 当正确响应时处理数据
                StringBuffer sb = new StringBuffer();
                String readLine;
                BufferedReader responseReader;
                // 处理响应流,必须与服务器响应流输出的编码一致
                responseReader = new BufferedReader(new InputStreamReader(
                        httpConn.getInputStream(), "UTF-8"));
                while ((readLine = responseReader.readLine()) != null) {
                    sb.append(readLine).append('\n');
                }
                responseReader.close();
                System.out.println(sb.toString());
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

    }

配置自己的服务

拿Web服务举例:

需要特别注意的地方

①URL的填写的端口号必须是80443,使用tomcat的话可以上网搜一下如何修改tomcat的端口号
②第一次配置服务的时候,需要让微信官方服务器和自己建的服务器进行交互,具体的可以看开发者文档——开始开发——接入指南
③最头疼的token,经常性的验证失败,客观原因比较多,只能多试几次。


服务器接入参考代码网址:
http://blog.csdn.net/rodjohnsondoctor/article/details/22157323

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

微信公众号开发系列-开发模式创建自定义菜单

微信公众号开发系列-开发模式创建自定义菜单;通过程序方式实现自定义菜单,通过http请求封装类交互微信自定义菜单接口 1、得到AccessTokenaccess_token是公众号的全局唯一票据,公众...
  • fuyifang
  • fuyifang
  • 2014年11月01日 20:50
  • 15698

微信公众号开发(四)—— 自定义菜单的创建

自定义菜单创建接口 1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。 3、创建...

Java微信公众平台开发(十)——微信自定义菜单的创建实现

自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自己用代码实现,所以对于刚开始接触的人来说可能存在一定的疑惑,这里我说下平时我们在开发...

微信开发之——自定菜单创建

自定义菜单创建接口: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN...

Ruby on Rails微信开发3——自定义菜单的创建

根据自定义菜单创建的开发者文档 创建自定义菜单,创建步骤如下: 1、获取access_token  def get_access_token response=Typhoeus.ge...
  • lissdy
  • lissdy
  • 2015年01月09日 11:46
  • 3407

微信自定义菜单的 创建|查询|取消 示例代码

微信公众帐号 服务号可以使用 自定义菜单功能。之前在创建菜单时一直失败,原因是$data 格式一直没有传正确,后来终于解决了。这里先记录下 顺便封装了一个类,便于自定义菜单的管理。此类仅仅是自定义菜单...

微信开发模式之自定义菜单实现

编辑模式和开发模式是有冲突的。所以我们启用微信公众号的开发模式之后,那些菜单是看不到的哦。不过现在个人订阅号是不可以使用高级开发者模式的,如自定义菜单,不过我们还是可以通过测试号来测试一下,然后移代码...

微信公众号开发者模式下,怎样显示菜单?

微信公众号在编辑模式下,设置菜单很容易,开发者模式不同,需要用代码实现。 开发者模式下的菜单是通过请求微信指定的接口获取的,接口地址是:POST(请使用https协议)http请求方式:POST(请使...

Android开发——使用fragment仿微信底部菜单栏

Android在3.0版本加入了Fragment,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上,也有很多的场景可以。然而现在Fragment的应用的场...

微信开发——测试号申请,接口配置,JS接口安全域名,自定义菜单

假设你已经申请啦微信公众号。 1、申请测试账号: 先申请公众号后,点击进入公从号的管理页面;找到“开发者工具”,找到“公众平台测试账号”,点击“进入”。 2、接口配置信息设置 必须要外网哦,也就...
  • hzw2312
  • hzw2312
  • 2017年04月08日 08:41
  • 17296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信开发——2、代码模式下创建菜单
举报原因:
原因补充:

(最多只允许输入30个字)