最近开发微信小程序, 使用到了客服消息功能, 开发文档中这样描述:
接收消息和事件
在页面中使用 <button open-type="contact" /> 可以显示进入客服会话按钮。
当用户在客服会话发送消息(或进行某些特定的用户操作引发的事件推送时),微信服务器会将消息(或事件)的数据包(JSON或者XML格式)POST请求开发者填写的URL。开发者收到请求后可以使用发送客服消息接口进行异步回复。
用户在客服会话中发送文本消息时将产生如下数据包:
{
"ToUserName": "toUser",
"FromUserName": "fromUser",
"CreateTime": 1482048670,
"MsgType": "text",
"Content": "this is a test",
"MsgId": 1234567890123456
}
也就是说微信服务器会把这个数据包post到我的服务器上, 我的服务器收到数据包后, 就把信息保存到数据库中.
后台服务器我用的是java平台技术springBoot那一套方案, 我建立一个实体类来映射消息 , 字段名与数据包中的字段名保持一致, 问题来了, 数据包中的字段首字母都是大写的如 ToUserName, java类中字段名一般都是首字母小写的, 为了与数据包保持一致, 那就大写吧, 控制器方法用@RequestBody接收数据包, 写完调试时, 发现死活接收不到数据, 都是null , 没办法, 把字段名首字母改成小写试试, 发现spring直接报错, 说ToUserName没有找到相应的getter方法, 行不通.
后来一通搜索大法, 找到解决方法如下