本地请求报文中的=变成了u003d,导致和后台接收报文不一致

时间:2025-04-01 09:28:31

数据都对的,和后台联调,接口一直返回验签失败,和后端对了一下午,都没找出问题。。。

仔细比对了报文,发现我这边请求的文本里面的=变成了\u003d\u003d,而后端贴给我的报文是==

查看了几个帖子,发现问题:

我这边数据转成JSON使用的是google的Gson,Gson默认是进行HTML ESCAPE,也就是转码,因此对象中有=时,Gson就会把=转码,所以我本地的请求体中的报文是带有\u003d\u003d;而后端接收到请求之后是把数据封装成JSONObject,封装成object会将\u003d\u003d转码成==,然后再toString进行验签,所以后端处理过的数据是带有==,肯定验签失败啊。。。

解决问题:

在初始化Gson的时候设置不转码:

Gson gson = new GsonBuilder().disableHtmlEscaping().create();