阿里云短信服务RPC调用时常报错签名错误Specified signature nonce was used already.

阿里云短信服务RFC调用偶然报错签名错误Specified signature nonce was used already.

在使用阿里云短信API进行RFC调用时,我们有时会遇到签名失败的情况,本文将介绍该问题的原因和解决方法。

Specified signature nonce was used already报错原因

这个报错信息后面会紧接着服务器(阿里云)用来验证签名的字符串也就是生成签名的字符串通过本地代码调试发现与本地代码打印的用于生成签名的字符串进行对比,发现是一摸一样。那到底是哪里有问题呢?通过不断对阿里云短信的API进行调用发现偶尔是可以调用成功的,这就说明生成签名的逻辑是没有问题的,后面大量测试发现每次调用失败时Signature中总会包含一个或多个的+号。

解决方式

通过分析原因,发现:
我本地调用阿里云短信的API使用的生成签名的逻辑是参考了阿里云短信SDK里面调用RPC的逻辑,这里面就会有一个坑:

在这里插入图片描述
在这里插入图片描述
sdk中的percentEncode方法将+替换成了%20,这里面应该是替换成%2B
在请求API时 对生成出的签名(Signature)又进行了一次encode操作把+号替换成了%2B
这样更改之后 测试之后不会出现偶尔报签名错误的情况了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值