我已经疯了几个小时。我正在尝试使用SendMessage API调用Amazon SQS消息队列。
我正在遵循签名版本2方法(http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html)
我收到了不匹配签名的错误。我一直在想它与字典字节排序有关,但我花了好几个小时试图找出它并且没有运气: - /
我可以成功发送一条消息作为我的“查询字符串组件”: “AWSAccessKeyId = AKIAIEXAMPLE&安培;动作= SendMessage消息&安培;到期= 2013-02-22T12%3A19 3A30%&安培;消息体= 12321&安培;是SignatureMethod = HmacSHA256&安培; SignatureVersion = 2及版本= 2012年11月5日”
将这些名称值对分解为易于阅读:
[“AWSAccessKeyId”,“Action”,“Expires”,“MessageBody”,“SignatureMethod”,“SignatureVersion”,“Version”]
[“AKIAIEXAMPLE”,“SendMessage”,“2013-02-22T12%3A19%3A30”,“12321”,“HmacSHA256”,“2”,“2012-11-05”]
但不是这组查询字符串组件:
“AWSAccessKeyId = AKIAIEXAMPLE&安培;动作= SendMessage消息&安培;到期= 2013-02-22T12%3A19%3A30&安培;消息体= 234&安培;是SignatureMethod = HmacSHA256&安培; SignatureVersion = 2及版本= 2012年11月5日”
细分为:
[“AWSAccessKeyId”,“Action”,“Expires”,“MessageBody”,“SignatureMethod”,“SignatureVersion”,“Version”]
[“AKIAIEXAMPLE”,“SendMessage”,“2013-02-22T12%3A19%3A30”,“234”,“HmacSHA256”,“2”,“2012-11-05”]
两者之间唯一的区别是MessageBody的值(12321有效,234没有),我尝试了各种各样的值,使用字符和整数,似乎无法解决问题。
任何建议都将不胜感激。