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


相关文章
|
3月前
|
XML 存储 JSON
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
Python学习 -- 常用数据交换格式(CSV、XML、JSON)
31 0
|
4月前
|
小程序 开发者
关于UniApp启动到微信小程序工具提示找不到app.json
关于UniApp启动到微信小程序工具提示找不到app.json
|
3月前
|
XML JSON 前端开发
Ajax技术【Ajax技术详解、 Ajax 的使用、Ajax请求、 JSON详解、JACKSON 的使用 】(一)-全面详解(学习总结---从入门到深化)
Ajax技术【Ajax技术详解、 Ajax 的使用、Ajax请求、 JSON详解、JACKSON 的使用 】(一)-全面详解(学习总结---从入门到深化)
58 1
|
2月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
29 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
4天前
|
存储 JSON NoSQL
MongoDB的文档存储格式BSON和JSON的区别
MongoDB的文档存储格式BSON和JSON的区别
|
16天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
28天前
|
JSON 数据格式
糊涂工具类(hutool)post请求设置body参数为json数据
糊涂工具类(hutool)post请求设置body参数为json数据
19 1
|
1月前
|
小程序 前端开发 程序员
【微信小程序】-- 网络数据请求(十九)
【微信小程序】-- 网络数据请求(十九)
|
1月前
|
JSON 小程序 开发工具
【微信小程序】--JSON 配置文件作用(三)
【微信小程序】--JSON 配置文件作用(三)
|
1月前
|
JSON JavaScript 前端开发
优化你的 HTTP 请求:JSON 与 Form-data 比较
在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:JSON与Form-data。尽管它们的终极目标一致,即数据传输的高效性和可靠性,但它们各自所具备的特点和应用情境却大相径庭,构成了数据传输的两个主要途径。

热门文章

最新文章