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


相关文章
|
10天前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
48 7
|
1天前
|
JSON SpringCloudAlibaba Java
Springcloud Alibaba + jdk17+nacos 项目实践
本文基于 `Springcloud Alibaba + JDK17 + Nacos2.x` 介绍了一个微服务项目的搭建过程,包括项目依赖、配置文件、开发实践中的新特性(如文本块、NPE增强、模式匹配)以及常见的问题和解决方案。通过本文,读者可以了解如何高效地搭建和开发微服务项目,并解决一些常见的开发难题。项目代码已上传至 Gitee,欢迎交流学习。
Springcloud Alibaba + jdk17+nacos 项目实践
|
5天前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
26 5
|
5天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【10月更文挑战第3天】微信小程序作为新兴应用形态,凭借便捷体验与社交传播能力,成为企业拓展业务的新渠道。本文探讨了微信小程序全栈开发中的PWA技术应用,包括离线访问、后台运行、桌面图标及原生体验等方面,助力开发者提升小程序性能与用户体验。PWA技术在不同平台的兼容性、性能优化及用户体验是实践中需注意的关键点。
22 5
|
1天前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
7天前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
19 2
|
6天前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
10 0
|
9天前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
167 0
|
21天前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
21天前
|
人工智能 前端开发 Java
Spring Cloud Alibaba AI,阿里AI这不得玩一下
🏀闪亮主角: 大家好,我是JavaDog程序狗。今天分享Spring Cloud Alibaba AI,基于Spring AI并提供阿里云通义大模型的Java AI应用。本狗用SpringBoot+uniapp+uview2对接Spring Cloud Alibaba AI,带你打造聊天小AI。 📘故事背景: 🎁获取源码: 关注公众号“JavaDog程序狗”,发送“alibaba-ai”即可获取源码。 🎯主要目标:
39 0