项目场景:
微信小程序发送订阅消息
文档连接:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html
问题描述
一请求接口一直返回 data.thing1.value is emtpy
原因分析:
经过分析发现主要原因有以下三点:
1、请求参数错误,字符串被二次JSON导致
2、格式错误,文档要求键值对形式,key一定要对应上,值都是value
3、内容有问题,没有按照文档要求
解决方案:
测试demo代码如下
Map<String, String> dataMap = new HashMap<>();
JSONObject thing = new JSONObject();
thing.put("value", "测试数据");
dataMap.put("thing1", JSONObject.toJSONString(thing));
JSONObject name = new JSONObject();
name.put("value", "123");
dataMap.put("name2", JSONObject.toJSONString(name));
上面代码输出结果为:
{“name2”:“{\“value\”:\“123\”}”,“thing1”:“{\“value\”:\“测试数据\”}”}
后代码调整为如下:
Map<String, Object> dataMap = new HashMap<>();
JSONObject thing = new JSONObject();
thing.put("value", "测试数据");
dataMap.put("thing1", thing);
JSONObject name = new JSONObject();
name.put("value", "123");
dataMap.put("name2", name);
输出结果为:
{“name2”:{“value”:“123”},“thing1”:{“value”:“测试数据”}}
到这里请求参数data没有问题了,再有问题就是value没有按照文档需求。
详细参考顶部链接:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html
再失败
结果发现是我输入的数字,大意了。改成中文之后,就成功了
订阅消息发送成功,到这里就结束了。