有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案