【问题标题】:Error 400 with python-amazon-simple-product-api via pythonanywherepython-amazon-simple-product-api 通过 pythonanywhere 出现错误 400
【发布时间】:2015-09-22 06:27:23
【问题描述】:

我在一天中的大部分时间都在处理这个问题,但很长一段时间以来一直在想出相同的错误 400。基本上,该应用程序的目标是从亚马逊推荐 URL 中解析一本书的 ISBN,并将其用作从亚马逊产品广告 API 中提取图像的参考键。该网页是用 Python 3.4 和 Django 1.8 编写的。我在这里花了很长时间研究并决定使用 python-amazon-simple-product-api ,因为它可以更容易地解析来自亚马逊的结果。

答案如:How to use Python Amazon Simple Product API to get price of a product

让它看起来很简单,但我还没有完全让它成功地查找产品。这是我的方法通常执行的控制台打印输出,并且已经填写了正确的 ISBN:

>>> from amazon.api import AmazonAPI
>>> access_key='amazon-access-key'
>>> secret ='amazon-secret-key'
>>> assoc ='amazon-associate-account-name'
>>> amazon = AmazonAPI(access_key, secret, assoc)
>>> product = amazon.lookup(ItemId='1632360705')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/tsuko/.virtualenvs/django17/lib/python3.4/site-packages/amazon/api.py", line 161, in lo
okup
    response = self.api.ItemLookup(ResponseGroup=ResponseGroup, **kwargs)
  File "/home/tsuko/.virtualenvs/django17/lib/python3.4/site-packages/bottlenose/api.py", line 242, i
n __call__
    {'api_url': api_url, 'cache_url': cache_url})
  File "/home/tsuko/.virtualenvs/django17/lib/python3.4/site-packages/bottlenose/api.py", line 203, i
n _call_api
    return urllib2.urlopen(api_request, timeout=self.Timeout)
  File "/usr/lib/python3.4/urllib/request.py", line 153, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.4/urllib/request.py", line 461, in open
    response = meth(req, response)
  File "/usr/lib/python3.4/urllib/request.py", line 571, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.4/urllib/request.py", line 499, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.4/urllib/request.py", line 433, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.4/urllib/request.py", line 579, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

现在我想我很好奇这是 PythonAnywhere 的一些怪癖,还是我错过了 Django 中的配置设置?据我所知,通过 AWS 和 Amazon Associates 页面我的密钥是正确的。我现在不太担心解析,只是获取对象。我什至尝试绕过 API 并仅使用 Bottlenose(API 扩展),但我得到相同的错误 400 结果。

我对 Django 和 Amazon 的 API 非常陌生,我们将不胜感激!

【问题讨论】:

  • 亚马逊以“错误请求”错误回复您。这意味着,您可能正在发送不正确的信息。仔细检查你的钥匙等......

标签: python django amazon-web-services pythonanywhere


【解决方案1】:

您仍未授权您的帐户访问 API。为此,您可以前往https://affiliate-program.amazon.com/gp/advertising/api/registration/pipeline.html

【讨论】:

  • 您完全正确,感谢您帮助发现这个简单的步骤!对于迟到的批准,我深表歉意。
  • 另一个可能导致相同错误的问题是,当您拥有多个 AWS 账户并且使用 API 密钥注册的账户与您在联盟计划中注册的电子邮件不同时。
  • 我知道答案已经有一段时间了,但另一点可能是 API 会查找 .com 域。因此,如果您在 .co.uk 或 .de 中查找,则必须先指定区域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
相关资源
最近更新 更多