SpringCloud Alibaba 开发微信公众号 (自定义菜单json请求格式)

简介: SpringCloud Alibaba 开发微信公众号 (自定义菜单json请求格式)

上节讲了调用微信公众平台获取Access token,有了Access token就可以进行平台接口测试了。

当然在此之前还需要自己的测试号来查看自己接口调用的效果。测试号申请如下:

网络异常,图片无法展示
|

进入测试号,里面有一个测试号二维码,手机扫码即可浏览测试号情况

网络异常,图片无法展示
|

这样就有了一个空白的测试公众号了

网络异常,图片无法展示
|

自定义菜单开发

参考微信接口文档可以看到按钮的类型有很多(click点击推事件、view跳转 URL、scancode_push:扫码推事件、scancode_waitmsg:扫码推事件且弹出“消息接收中”、pic_sysphoto:弹出系统拍照发图、pic_photo_or_album:弹出拍照或者相册发图、pic_weixin:弹出微信相册发图器、location_select:弹出地理位置选择器、media_id:下发消息(除文本消息)。。。。)

网络异常,图片无法展示
|

根据请求实例可以看出 url需要携带access_token(后面所有必然都要携带) 并上送json格式请求数据

网络异常,图片无法展示
|

1.json请求格式上送数据测试

HttpClientUtils请求工具类

/**
 * 封装HTTP POST方法
 *
 * @param
 * @param (如JSON串)
 * @return
 * @throws ClientProtocolException
 * @throws IOException
 */
public static String post(String url, String data) throws ClientProtocolException, IOException {
    HttpClient httpClient = HttpClients.createDefault();
    HttpPost httpPost = new HttpPost(url);
    //设置请求和传输超时时间
    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).build();
    httpPost.setConfig(requestConfig);
    httpPost.setHeader("Content-Type", "text/json; charset=utf-8");
    httpPost.setEntity(new StringEntity(data, "UTF-8"));
    HttpResponse response = httpClient.execute(httpPost);
    String httpEntityContent = getHttpEntityContent(response);
    httpPost.abort();
    return httpEntityContent;
}
复制代码

常量类WeCharConstant增加 创建菜单请求url常量

/**
 * 创建菜单URL
 */
public static final String CREATE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
复制代码

菜单:MenuService

import cn.org.spring.common.util.HttpClientUtils;
import com.ctsi.sddx.constants.WeCharConstant;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
/**
 * @Author : lizzu
 * @create 2022/9/25 15:19
 */
@Service
public class MenuService {
    private static final String CREATE_URL = WeCharConstant.CREATE_MENU_URL;
    @Resource
    private AccessTokenService accessTokenService;
    /**
     * 创建菜单
     *
     * @param json
     * @throws IOException
     */
    public String createMenu(String json) throws IOException {
        return sendPost(json);
    }
    /**
     * 发送POST请求
     *
     * @param data 请求数据
     * @return
     * @throws IOException
     */
    private String sendPost(String data) throws IOException {
        return HttpClientUtils.post(CREATE_URL.replace("ACCESS_TOKEN", accessTokenService.getAccessToken()), data);
    }
}
复制代码

MenuController

import java.io.IOException;
/**
 * @Author : lizzu
 * @create 2022/9/25 15:24
 */
@RestController
@RequestMapping("/v1/weChart")
public class MenuController {
    @Autowired
    MenuService menuService;
    @GetMapping("/createMenuToJson")
    public String createMenuToJson(String json) throws IOException {
        return menuService.createMenu(json);
    }
    @GetMapping("/deleteMenu")
    public String deleteMenu() throws IOException {
        return menuService.deleteMenu();
    }
}
复制代码

上送json报文:

{
  "button": [
    {
      "key": "20",
      "name": "拍照",
      "sub_button": [
        {
          "name": "搜索",
          "type": "view",
          "url": "http://www.soso/com/"
        },
        {
          "name": "搜索1",
          "type": "view",
          "url": "http://www.baidu.com/"
        }
      ],
      "type": "click"
    },
    {
      "key": "20",
      "name": "个人中心",
      "sub_button": [
        {
          "name": "百度",
          "type": "view",
          "url": "http://www.baidu.com/"
        }
      ],
      "type": "click"
    },
    {
      "key": "20",
      "name": "我的会员",
      "type": "click"
    }
  ]
}
复制代码

返回 { "errcode": 0, "errmsg": "ok" } 查看效果

网络异常,图片无法展示
|

网络异常,图片无法展示
|

json请求格式 完成

下篇讲创建Button类 组织json上送数据


相关文章
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
2097 7
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
5681 2
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
4436 8
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
1866 4
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
762 1
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
1018 37
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
479 1