全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自己用代码实现,所以对于刚开始接触的人来说可能存在一定的疑惑,这里我说下平时我们在开发模式下常用的两种自定义菜单的实现方式:①不用写实现代码,直接用网页测试工具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微信公众平台之自定义菜单  # 自定义  # 在这里  # 两种  # 博客  # 的人  # 的是  # 都是  # 测试工具  # 两种类型  # 下午  # 文档  # 调试工具  # 我说  # 就不  # 如有  # 模式下  # 腾讯  # 中有  # 对你  # 我用 


相关文章: 高防服务器租用指南:配置选择与快速部署攻略  开心动漫网站制作软件下载,十分开心动画为何停播?  深圳网站制作的公司有哪些,dido官方网站?  宿州网站制作公司兴策,安徽省低保查询网站?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  制作表格网站有哪些,线上表格怎么弄?  如何在阿里云购买域名并搭建网站?  Android自定义控件实现温度旋转按钮效果  建站168自助建站系统:快速模板定制与SEO优化指南  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  如何在阿里云ECS服务器部署织梦CMS网站?  怀化网站制作公司,怀化新生儿上户网上办理流程?  常州自助建站费用包含哪些项目?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  建站之星导航菜单设置与功能模块配置全攻略  建站之星2.7模板:企业网站建设与h5定制设计专题  独立制作一个网站多少钱,建立网站需要花多少钱?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  建站之星安装提示数据库无法连接如何解决?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  MySQL查询结果复制到新表的方法(更新、插入)  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何快速打造个性化非模板自助建站?  已有域名能否直接搭建网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何用搬瓦工VPS快速搭建个人网站?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何通过商城自助建站源码实现零基础高效建站?  已有域名和空间,如何快速搭建网站?  小型网站制作HTML,*游戏网站怎么搭建?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  为什么Go需要go mod文件_Go go mod文件作用说明  如何零基础在云服务器搭建WordPress站点?  再谈Python中的字符串与字符编码(推荐)  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  建站之星好吗?新手能否轻松上手建站?  建站主机解析:虚拟主机配置与服务器选择指南  网站制作企业,网站的banner和导航栏是指什么?  如何通过主机屋免费建站教程十分钟搭建网站?  建站主机是什么?如何选择适合的建站主机? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。