关闭

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

标签: 微信代码模式
477人阅读 评论(0) 收藏 举报
分类:

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


代码创建菜单

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

步骤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

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:166202次
    • 积分:3432
    • 等级:
    • 排名:第10286名
    • 原创:181篇
    • 转载:15篇
    • 译文:0篇
    • 评论:50条
    文章分类
    最新评论