我是靠谱客的博主 碧蓝自行车,最近开发中收集的这篇文章主要介绍微信java创建菜单_微信自定义菜单的创建(JAVA版),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

微信自定义菜单的创建与使用

需求

当微信公众号设置为开发者模式,想要自己创建和开发菜单的话,就需要自己调用微信创建菜单的接口来创建菜单了。创建菜单之后,如果需要迫切的看到效果,有时候需要取消关注-从新关注才能够看到的哦(缓存问题)。由于新版微信添加的挺多按钮类型,目前只实现click(点击推事件)和view(跳转URL),其他类型的大致相同。

0818b9ca8b590ca3270a3433284dd417.png

注意:公众号必须是认证了的才有这个自定义菜单创建的功能的哦。你可以在自己的公众号->开发者中心,查看是否支持该接口。

菜单类介绍

Buttonx按钮类

private String name;

private String type; //菜单类型 1:点击事件,2:跳转url,3:分组菜单

private String key; //菜单key值

private String url; //跳转的链接

private List sub_button; //如果是一级菜单,这集合表示二级菜单

//all get and set 所有字段的get 和 set方法

Menux菜单类

public class Menux {

private List button;

public List getButton() {

return button;

}

public void setButton(List button) {

this.button = button;

}

}

菜单类包含按钮类(微信最多只能有三个一级菜单哦),按钮类有一级按钮、事件推送按钮、跳转URL按钮,一级按钮可以包含5个二级按钮,5个二级按钮的类型只有事件推送按钮、跳转URL按钮。

场景

如下图公众号菜单:

0818b9ca8b590ca3270a3433284dd417.png

按钮类型:

1.主页:跳转URL按钮

2.主页3:推送事件按钮

3.一级菜单:(如名)

代码

根据菜单分别构建相关的button和menu对象。

如:

主页这个button对象:

Buttonx btn1 = new Buttonx();

btn1.setName("主页");

btn1.setUrl("http://www.csdn.net/");

btn1.setType("view");

Buttonx btn2 = new Buttonx();

btn2.setName("主页3");

btn2.setKey("KEY_1");

btn2.setType("click");

Buttonx btnsub = new Buttonx();

btnsub.setName("一级菜单");

Buttonx btn3 = new Buttonx();

btn3.setName("大家好");

btn3.setUrl("http://www.baidu.com/");

btn3.setType("view");

Buttonx btn4 = new Buttonx();

btn4.setName("你好");

btn4.setKey("KEY_1");

btn4.setType("click");

btnsub.sub_button.add(btn3);

btnsub.sub_button.add(btn4);

Menux menu = new Menux();

menu.getButton().add(btn1);

menu.getButton().add(btn2);

menu.getButton().add(btnsub);

// 将菜单对象转换成json字符串,利用的是一个jar包,不用自己封装了,也可以自己手动封装

String jsonMenu = net.sf.json.JSONObject.fromObject(menu).toString();

// 调用接口创建菜单

JSONObject jsonObject = httpRequest(url, "POST", jsonMenu);

if (null != jsonObject) {

//如果返回的代码不等于0,那么就是说操作的数据不成功

if (0 != jsonObject.getInt("errcode")) {

result = jsonObject.getInt("errcode");

log.error("创建菜单失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));

}

}

}

httpRequest(String requestUrl, String requestMethod, String outputStr)方法描述:

/** * 发起https请求并获取结果 *@param requestUrl 请求地址 *@param requestMethod 请求方式(GET、POST) *@param outputStr 提交的数据 *@return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */

public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {

JSONObject jsonObject = null;

StringBuffer buffer = new StringBuffer();

try {

// 创建SSLContext对象,并使用我们指定的信任管理器初始化

TrustManager[] tm = { new MyX509TrustManager() };

SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");

sslContext.init(null, tm, new java.security.SecureRandom());

// 从上述SSLContext对象中得到SSLSocketFactory对象

SSLSocketFactory ssf = sslContext.getSocketFactory();

URL url = new URL(requestUrl);

HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();

httpUrlConn.setSSLSocketFactory(ssf);

httpUrlConn.setDoOutput(true);

httpUrlConn.setDoInput(true);

httpUrlConn.setUseCaches(false);

// 设置请求方式(GET/POST)

httpUrlConn.setRequestMethod(requestMethod);

if ("GET".equalsIgnoreCase(requestMethod))

httpUrlConn.connect();

// 当有数据需要提交时

if (null != outputStr) {

OutputStream outputStream = httpUrlConn.getOutputStream();

// 注意编码格式,防止中文乱码

outputStream.write(outputStr.getBytes("UTF-8"));

outputStream.close();

}

// 将返回的输入流转换成字符串

InputStream inputStream = httpUrlConn.getInputStream();

InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String str = null;

while ((str = bufferedReader.readLine()) != null) {

buffer.append(str);

}

bufferedReader.close();

inputStreamReader.close();

// 释放资源

inputStream.close();

inputStream = null;

httpUrlConn.disconnect();

jsonObject = JSONObject.fromObject(buffer.toString());

} catch (ConnectException ce) {

log.error("Weixin server connection timed out.");

} catch (Exception e) {

log.error("https request error:{}", e);

}

return jsonObject;

}

总结

执行如果没有出现错误,就代表请求成功了,对应的微信公众号就生成了自定义菜单了。在公众号点击按钮的时候,就会响应对应的事件了。 注意:如果点击的按钮是推送事件的话,那么就需要在自己的系统设置响应的相关内容了。

最后

以上就是碧蓝自行车为你收集整理的微信java创建菜单_微信自定义菜单的创建(JAVA版)的全部内容,希望文章能够帮你解决微信java创建菜单_微信自定义菜单的创建(JAVA版)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部