And*_*kha 1 http objective-c amazon-web-services http-status-code-401 ios
我无可救药地试图打电话Amazon MWS Products API
.特别是我正在尝试请求此功能
它需要使用签名构建一个非常复杂的请求:
POST /Products/2011-10-01 HTTP/1.1
Content-Type: x-www-form-urlencoded
Host: mws.amazonservices.com
User-Agent: <Your User Agent Header>
AWSAccessKeyId=AKIAEXAMPLEFWR4TJ7ZQ
&Action=ListMatchingProducts
&MWSAuthToken=amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE
&MarketplaceId=ATVPDKIKX0DER
&Query=0439708184
&SellerId=A1IMEXAMPLEWRC
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2012-12-12T22%3A23%3A50Z
&Version=2011-10-01
&Signature=V%2BEXAMPLERT%2Baj%2Fxwqo7y3PIifMFHeqFlNYW0EXAMPLEA%3D
Run Code Online (Sandbox Code Playgroud)
我在这个小库的帮助下构建了这个查询:
所以我的最终url字符串看起来像这样:
https://mws.amazonservices.com/Products/2011-10-01?AWSAccessKeyId=<MY_ACCESS_KEY>&Action=ListMatchingProducts&MarketplaceId=A1PA6795UKMFR9&Query=0439708184&SellerId=<SELLER_ID>&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2016-04-19T16%3A50%3A13Z&Version=2011-10-01&Signature=mZt3OhM14gwLdsQ%2Bhxz5UFMzr7m2U36DvZ7RG3dcsTI%3D
Run Code Online (Sandbox Code Playgroud)
似乎url字符串是正确构建的.我想是的,因为如果参数丢失或不正确,API会返回400错误,并说明此参数无效.这同样适用于签名.如果签名不正确,则API返回错误,该错误明确指出签名无效.所以,再次,我认为网址必须是好的.然而,API返回401错误和一个看起来像这样的html页面:
<?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<Error>
<Type>Sender</Type>
<Code>AccessDenied</Code>
<Message>Access denied</Message>
</Error>
<RequestID>7b12e3c8-7b1a-4b6e-b7ba-15ec8c4e0968</RequestID>
</ErrorResponse>
Run Code Online (Sandbox Code Playgroud)
拒绝访问.我不明白为什么.我已经花了几个小时试图弄清楚什么是错的.谁能帮我?
问题的原因是我打电话给美国网址https://mws.amazonservices.com
而不是欧洲网址https://mws-eu.amazonservices.com
.如果亚马逊的回应给出了更多关于错误的背景信息,那将是非常好的Access denied
归档时间: |
|
查看次数: |
1803 次 |
最近记录: |