Java微信公众平台开发(10) 微信自定义菜单的创建实现
发布时间 - 2026-01-11 00:50:34 点击率:次自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自己用代码实现,所以对于刚开始接触的人来说可能存在一定的疑惑,这里我说下平时我们在开发模式下常用的两种自定义菜单的实现方式:①不用写实现代码,直接用网页测试工具Post json字符串生成菜单;②就是在我们的开发中用代码实现菜单生成!(参考文档 )在自定义菜单中菜单的类型分为两种,一种为view的视图菜单,点击之后直接跳转到url页面;还有一种是click类型的点击型,后端通过点击事件类型给与不同的相应;后面新增了各种特色功能的菜单其本质都还是Click类型的菜单,所以生成的规则都是一样的,其生成菜单的方式都是向微信服务器post json字符串生成菜单,下面讲述菜单生成的方法和规则!

(一)使用网页调试工具生成菜单
我们通过连接进入到网页调试工具,如下图:
在这里我们生成菜单的时候只需要我们账号的有效token和json字符串即可,这里的json字符串可以参照文档中的案例做出修改得到,我这里给出的一个案例如下:
{
"button": [
{
"name": "博客",
"type": "view",
"url": "http://www.cuiyongzhi.com"
},
{
"name": "菜单",
"sub_button": [
{
"key": "text",
"name": "回复图文",
"type": "click"
},
{
"name": "博客",
"type": "view",
"url": "http://www.cuiyongzhi.com"
}
]
},
{
"key": "text",
"name": "回复图文",
"type": "click"
}
]
}
我们填入响应的token,点击检查问题如果返回结果Ok就可以了,如下:
到这里我们采用web测试工具生成菜单的方式就完成了,下面接着介绍用代码生成菜单!
(二)采用代码实现菜单的生成
前面我们有说道在菜单中有view和click两种类型的事件,这里我们首先在代码中建立两种类型对应的java实体,view类型建立实体ViewButton.java如下:
package com.cuiyongzhi.wechat.menu;
/**
* ClassName: ViewButton
* @Description: 视图型菜单事件
* @author dapengniao
* @date 2016年3月14日 下午5:31:38
*/
public class ViewButton {
private String type;
private String name;
private String url;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
同样的建立click的实体ClickButton.java如下:
package com.cuiyongzhi.wechat.menu;
/**
* ClassName: ClickButton
* @Description: 点击型菜单事件
* @author dapengniao
* @date 2016年3月14日 下午5:31:50
*/
public class ClickButton {
private String type;
private String name;
private String key;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
这里创建两个实体也是为了方便我们在自定义菜单中对json的封装,在这里我用代码的形式封装了上面给出的同样的json格式,并调用生成自定义菜单的接口发送到微信服务器,简单代码如下:
package com.cuiyongzhi.wechat.menu;
import com.alibaba.fastjson.JSONObject;
import com.cuiyongzhi.wechat.util.HttpUtils;
import net.sf.json.JSONArray;
public class MenuMain {
public static void main(String[] args) {
ClickButton cbt=new ClickButton();
cbt.setKey("image");
cbt.setName("回复图片");
cbt.setType("click");
ViewButton vbt=new ViewButton();
vbt.setUrl("http://www.cuiyongzhi.com");
vbt.setName("博客");
vbt.setType("view");
JSONArray sub_button=new JSONArray();
sub_button.add(cbt);
sub_button.add(vbt);
JSONObject buttonOne=new JSONObject();
buttonOne.put("name", "菜单");
buttonOne.put("sub_button", sub_button);
JSONArray button=new JSONArray();
button.add(vbt);
button.add(buttonOne);
button.add(cbt);
JSONObject menujson=new JSONObject();
menujson.put("button", button);
System.out.println(menujson);
//这里为请求接口的url +号后面的是token,这里就不做过多对token获取的方法解释
String url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+"upeDW-2pWrHgLx3fGqgsvAvf-HkQBA--5uHOo9OW16uNdL9zNPnnuIN01UDFXh_5d-QdcnBxux9tXigFwm1z0SInbdkXEKa1pMhTqaZVxK7sCPj7421YQGI0v3evwiwiWALjAHASWH";
try{
String rs=HttpUtils.sendPostBuffer(url, menujson.toJSONString());
System.out.println(rs);
}catch(Exception e){
System.out.println("请求错误!");
}
}
}
上面代码的基本流程就是调用view和click两个实体封装json字符串menujson,最后调用发送方法将json发送给腾讯服务器,但是这里需要用到账号生成的token,我这里是直接写死的(可以参见token的获取方式),最终运行返回结果ok即可,如下:
自定义菜单的功能实现基本就是这些,下一篇将讲述【微信公众平台(map.weixin.qq.com)/开放平台(open.weixin.qq.com)/商户平台(pay.weixin.qq.com)之间的关联关系】希望可以对你给出帮助,感谢你的翻阅,如有疑问可以留言讨论!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# 微信
# 菜单
# java微信开发API第四步 微信自定义个性化菜单实现
# Android仿微信菜单(Menu)(使用C#和Java分别实现)
# java实现微信公众平台自定义菜单的创建示例
# Java微信公众平台之自定义菜单
# 自定义
# 在这里
# 两种
# 博客
# 的人
# 的是
# 都是
# 测试工具
# 两种类型
# 下午
# 文档
# 调试工具
# 我说
# 就不
# 如有
# 模式下
# 腾讯
# 中有
# 对你
# 我用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速建站并高效导出源代码?
Laravel怎么实现验证码(Captcha)功能
Laravel如何自定义错误页面(404, 500)?(代码示例)
如何利用DOS批处理实现定时关机操作详解
如何在建站主机中优化服务器配置?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
PHP 500报错的快速解决方法
潮流网站制作头像软件下载,适合母子的网名有哪些?
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
如何续费美橙建站之星域名及服务?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
详解Oracle修改字段类型方法总结
如何在七牛云存储上搭建网站并设置自定义域名?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
Laravel怎么判断请求类型_Laravel Request isMethod用法
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
如何用AWS免费套餐快速搭建高效网站?
如何在IIS中新建站点并解决端口绑定冲突?
详解Android中Activity的四大启动模式实验简述
如何快速查询网站的真实建站时间?
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
详解Huffman编码算法之Java实现
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何快速搭建个人网站并优化SEO?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
使用C语言编写圣诞表白程序
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel安装步骤详细教程_Laravel环境搭建指南
如何在阿里云服务器自主搭建网站?
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在局域网内绑定自建网站域名?
移动端脚本框架Hammer.js
轻松掌握MySQL函数中的last_insert_id()
EditPlus中的正则表达式 实战(2)
Laravel如何实现API版本控制_Laravel版本化API设计方案
如何快速搭建支持数据库操作的智能建站平台?
如何登录建站主机?访问步骤全解析
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
大同网页,大同瑞慈医院官网?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践

