AWS签名的请求在使用java的Google App Engine上不起作用。网统一资源定位地址
全部
我正在使用Play(V1.2.4)框架开发一个简单的Java web应用程序。应用程序使用Amazon的产品广告API执行签名的ItemLookup请求。我正在将该应用程序部署到谷歌应用程序引擎(GAE),这就是我的问题所在
详细信息: 在本地/测试模式下,AWS签名请求在使用apache和。平民httpclient和更简单的java。网网址。在部署到GAE并发现使用SocketConnection时不支持HTTPClient连接后,我修改了AWS调用以使用java。网URL。AWS ItemLookup请求不仅继续在本地模式下工作,而且我在Google App Engine(GAE)中不再收到任何异常
问题: 然而,我遇到的问题是,我所有的AWS ItemLookup请求都返回一条消息,表明签名与AWS预期的不匹配。请参阅问题末尾的实际信息
因此,我很不确定发生了什么。我正在记录从本地模式和GAE发出的请求,签名URL请求的格式似乎没有任何问题。我已经检查过了,又检查了两次/三次;我的请求是用正确的AWS密钥发出的。这些调用在本地模式下使用相同的键,因此它们是否也应该通过GAE工作?例如,GAE上的一个示例请求(去掉AWS密钥/标签):
SIGNED REQUEST=http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=<removed>&AssociateTag=<removed>&ItemId=B0051VVOB2&Operation=ItemLookup&ResponseGroup=Large&Service=AWSECommerceService&Timestamp=2012-03-04T00%3A52%3A23Z&Version=2011-08-01&Signature=<removed>
所以,我开始认为GAE上的HmacSHA256可能工作不正确,或者我需要在GAE上使用不同的算法
也许我在GAE上使用AWS时遇到了一些问题?在这个问题上我真的需要一些帮助
谢谢你的帮助
ItemLookup响应错误(示例):
<ItemLookupErrorResponse xmlns="http://ecs.amazonaws.com/doc/2011-08-01/">
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message>
</Error>
<RequestID>aa42318e-9c2c-4f04-9905-670866223bc5</RequestID>
</ItemLookupErrorResponse>
共 (0) 个答案