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上送数据


相关文章
|
JSON IDE Java
鸿蒙开发:json转对象插件回来了
首先,我重新编译了插件,进行了上传,大家可以下载最新的安装包进行体验了,还是和以前一样,提供了在线版和IDE插件版,两个选择,最新的版本,除了升级了版本,兼容了最新的DevEco Studio ,还做了一层优化,就是针对嵌套对象和属性的生成,使用方式呢,一年前的文章中有过详细的概述,这里呢也简单介绍一下。
431 4
鸿蒙开发:json转对象插件回来了
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
517 3
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
1078 37
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
5748 2
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
2695 12
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
4475 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应用,提升业务价值。
1931 4
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
开发者
微信公众平台开发基本配置
微信公众平台开发基本配置
782 0

热门文章

最新文章