我是靠谱客的博主 细心小海豚,最近开发中收集的这篇文章主要介绍SpringBoot开发微信公众号(五)自定义菜单的创建,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自定义菜单的创建

一、自定义菜单

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。自定义菜单最多有三个一级菜单,名字最多4个汉字,课可参考开发
wendanhttps://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013

1.1 数据结构分析

{
"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"
}]
}]
}
{
"button": [
{
"name": "扫码",
"sub_button": [
{
"type": "scancode_waitmsg",
"name": "扫码带提示",
"key": "rselfmenu_0_0",
"sub_button": [ ]
},
{
"type": "scancode_push",
"name": "扫码推事件",
"key": "rselfmenu_0_1",
"sub_button": [ ]
}
]
},
{
"name": "发图",
"sub_button": [
{
"type": "pic_sysphoto",
"name": "系统拍照发图",
"key": "rselfmenu_1_0",
"sub_button": [ ]
},
{
"type": "pic_photo_or_album",
"name": "拍照或者相册发图",
"key": "rselfmenu_1_1",
"sub_button": [ ]
},
{
"type": "pic_weixin",
"name": "微信相册发图",
"key": "rselfmenu_1_2",
"sub_button": [ ]
}
]
},
{
"name": "发送位置",
"type": "location_select",
"key": "rselfmenu_2_0"
},
{
"type": "media_id",
"name": "图片",
"media_id": "MEDIA_ID1"
},
{
"type": "view_limited",
"name": "图文消息",
"media_id": "MEDIA_ID2"
}
]
}

1,2 根据json格式的结构,写对应的bean

/**
*
* 类名称: Button
* 类描述: 按钮
* @author yuanjun
* 创建时间:2017年12月8日下午8:35:38
*/
public class Button {
private String name;//菜单标题
private String type;//菜单的响应动作类型
private Button[] sub_button;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Button[] getSub_button() {
return sub_button;
}
public void setSub_button(Button[] sub_button) {
this.sub_button = sub_button;
}
}
/**
*
* 类名称: ClickButton
* 类描述: 点击类型
* @author yuanjun
* 创建时间:2017年12月8日下午8:38:06
*/
public class ClickButton extends Button{
private String key;//菜单KEY值
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
public class ViewButton extends Button{
private String url;//网页链接
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
/**
*
* 类名称: Menu
* 类描述: 菜单
* @author yuanjun
* 创建时间:2017年12月8日下午8:40:18
*/
public class Menu {
private Button[] button;
public Button[] getButton() {
return button;
}
public void setButton(Button[] button) {
this.button = button;
}
}

二、调用接口创建自定义菜单(通过测试开发账号)

import net.sf.json.JSONObject;
import com.yuanjun.weixindemo.bean.Button;
import com.yuanjun.weixindemo.bean.ClickButton;
import com.yuanjun.weixindemo.bean.Menu;
import com.yuanjun.weixindemo.bean.ViewButton;
/**
*
* 类名称: MemuUtil
* 类描述: 菜单工具
* @author yuanjun
* 创建时间:2017年12月8日下午8:42:15
*/
public class MenuUtil {
private static final String CTRATE_MENU_URL
= "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
/**
* 创建菜单
* @param accessToken
* @param Menu 菜单json格式字符串
* @return
*/
public static int createMenu(String accessToken,String Menu){
int result = Integer.MIN_VALUE;
String url = CTRATE_MENU_URL.replaceAll("ACCESS_TOKEN", accessToken);
JSONObject json = WeiXinUtil.doPoststr(url, Menu);
if(json!=null){
//从返回的数据包中取数据{"errcode":0,"errmsg":"ok"}
result = json.getInt("errcode");
}
return result;
}
public static String initMenu(){
String result = "";
//创建点击一级菜单
ClickButton button11 = new ClickButton();
button11.setName("往期活动");
button11.setKey("11");
button11.setType("click");
//创建跳转型一级菜单
ViewButton button21 = new ViewButton();
button21.setName("百度一下");
button21.setType("view");
button21.setUrl("https://www.baidu.com");
//创建其他类型的菜单与click型用法一致
ClickButton button31 = new ClickButton();
button31.setName("拍照发图");
button31.setType("pic_photo_or_album");
button31.setKey("31");
ClickButton button32 = new ClickButton();
button32.setName("发送位置");
button32.setKey("32");
button32.setType("location_select");
//封装到一级菜单
Button button = new Button();
button.setName("菜单");
button.setType("click");
button.setSub_button(new Button[]{button31,button32});
//封装菜单
Menu menu = new Menu();
menu.setButton(new Button[]{button11,button21,button});
return JSONObject.fromObject(menu).toString();
}
}

2.1 后台测试

import com.yuanjun.weixindemo.util.MenuUtil;
import com.yuanjun.weixindemo.util.WeiXinUtil;
public class TestMenu {
public static void main(String[] args) {
String accessToken
= WeiXinUtil.getAccess_Token();
String menu = MenuUtil.initMenu();
System.out.println(menu);
int result = MenuUtil.createMenu(accessToken,menu);
if(result==0){
System.out.println("菜单创建成功");
}else{
System.out.println("错误码"+result);
}
}
}



三、效果展示


四、出现的问题说明:

Exception in thread "main" java.lang.IllegalArgumentException: Illegal character in scheme name at index 0:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=fiE7pddrUUtuJbTMjXTUlS8HurXaougM8G1yQK9RkK3T3YrMkKRgegPxBxfNKkdwcat6KsWQVzV--_1V2YuYdyszJXb3B7BJO1fdec-JSZ8ZUBcAHARMT
at java.net.URI.create(URI.java:859)
at org.apache.http.client.methods.HttpPost.<init>(HttpPost.java:73)
at com.yuanjun.weixindemo.util.WeiXinUtil.doPoststr(WeiXinUtil.java:68)
at com.yuanjun.weixindemo.util.MenuUtil.createMenu(MenuUtil.java:29)
at com.yuanjun.weixindemo.TestMenu.main(TestMenu.java:10)
Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 0:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=fiE7pddrUUtuJbTMjXTUlS8HurXaougM8G1yQK9RkK3T3YrMkKRgegPxBxfNKkdwcat6KsWQVzV--_1V2YuYdyszJXb3B7BJO1fdec-JSZ8ZUBcAHARMT
at java.net.URI$Parser.fail(URI.java:2829)
at java.net.URI$Parser.checkChars(URI.java:3002)
at java.net.URI$Parser.checkChar(URI.java:3012)
at java.net.URI$Parser.parse(URI.java:3028)
at java.net.URI.<init>(URI.java:595)
at java.net.URI.create(URI.java:857)
... 4 more
解决办法:在复制微信的接口URL注意去除空格
错误代码:40055
设置VIew的菜单的跳转路径,需要加上http://

五 源码下载,包含消息,图片回复,创建菜单,智能翻译等

http://download.csdn.net/download/shenbug/10152017



最后

以上就是细心小海豚为你收集整理的SpringBoot开发微信公众号(五)自定义菜单的创建的全部内容,希望文章能够帮你解决SpringBoot开发微信公众号(五)自定义菜单的创建所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部