最近在对接某接口时,签名算法要求对post 请求参数进行编码,然后作为签名参数。
问题:
1.当post请求,body多个参数时,存在参数为null,导致签名失败
2.body乱序,导致签名失败问题
原因:
1.签名的时候需要对body进行编码,在body字段排序时,json序列化默认过滤掉为null的字段,
导致客户端编码没有为null字段,传给服务端的请求参数,编码时包含为null参数,导致签名参数不一致。处理方案:加签,编码时,为null字段也进行编码。代码如上图reqBody1的处理。
2.为什么要对body进行排序
想了一下场景,应该是传给服务端的body,可能与客服端编码body具体参数排序不一致,导致编码结果不同,如上图:reqBody 原始参数,s1为未排序的参数,reqBody1为排序后的参数。