在stackoverflow上有很多问题与这个问题有相似之处,但没有一个是完全相似的。
我有一个应用程序可以查询AWS并发回XML数据。我对它进行了监视,它发送了一个字符串,如下所示:
http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=AKIAID6DSLQQRYN3MDQA&AssociateTag=wwwratterriec-20&Keywords=031238792X&Operation=ItemSearch&SearchIndex=Books&Service=AWSECommerceService&SignatureMethod=HmacSHA1&SignatureVersion=2&Timestamp=2013-04-30T22%3A00%3A00.000Z&Version=2011-08-01&Signature=n1x%2BtbR71WFAgPHYq4rrpamgMb4%3D
如果你尝试一下,你会得到一些XML,告诉你“请求已经过期。时间戳日期是2013-04- 30 T22:00:00.000Z”等等。
如果“ToBeSigned”不匹配,您将收到消息“我们计算的请求签名与您提供的签名不匹配”。
我的问题是我无法得到一个生成正确“签名”的“待签名”版本。我发现文档令人困惑-也许是因为它是面向Java或PHP的。
上面链接中正确的“待签名”是什么?请使用 Delphi 伪代码!
1条答案
按热度按时间r8xiu3jd1#
这是我用过的 Delphi 代码。只要改变参数的值来适应你的目的,并放入你自己的密钥。我把时间戳放在现在加上2.4小时-改变它来适应你自己的目的。