微信小程序发送订阅消息(subscribeMessage.send)47003的解决方案argument invalid! data.thingxxx.value is empty

实现方式:

SpringBoot + JAVA

 

核对以下项:

其他参数没有什么好说的,都是字面值,就说data属性吧。

 

因为发送订阅消息是有类型的,格外注意,出现47003的问题,一版是传给微信服务器的参数有问题,我这边的问题是 data在前端传的是string导致的。

js的Object也就是对象,传到后台需要使用 Map | Object 类型进行接收。

 

这是对应后台的接口的API签名,注意这个@RequestBody注解,将前端传的参数作为主体接收,并封装为对象,这个DTO是对请求参数的封装,不用在意。

 

swagger作为接口文档定义,所以,当定义了@RequestBody注解,swagger就会更改为这种请求参数的方式。

简单的说就是我们需要传递json数据,而不能传formData类型的数据,这样会导致data的数据为字符串信息。

 

 

归根结底,就是请求参数的 `data` 是一个Object类型,Java服务器端接收需要使用Map或Object类型进行填充其中的data属性。

就算接口使用Object类型在接收data属性时,也会封装为Map的值。

 

最终data的封装结构为:

 

结束。。。。。。

 

 

 

文档:subscribeMessage.send.html

posted @ 2022-07-27 17:46  星小梦  阅读(8595)  评论(0编辑  收藏  举报