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

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

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

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

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

解决问题:

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

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值