2015-07-04 17 views
5

Tôi đã ở đây cho phần tốt hơn trong một ngày nhưng đã đến với cùng một Error 400 trong một thời gian khá dài. Về cơ bản, mục tiêu của ứng dụng là phân tích ISBN của sách từ url giới thiệu Amazon và sử dụng nó làm khóa tham chiếu để lấy hình ảnh từ API quảng cáo sản phẩm của Amazon. Trang web được viết bằng Python 3.4 và Django 1.8. Tôi đã dành khá nhiều thời gian nghiên cứu ở đây và định cư để sử dụng python-amazon-simple-product-api vì nó sẽ làm cho việc phân tích kết quả từ Amazon dễ dàng hơn một chút.Lỗi 400 với python-amazon-simple-product-api qua pythonanywhere

Answers như: How to use Python Amazon Simple Product API to get price of a product

Làm cho nó có vẻ khá đơn giản, nhưng tôi đã không hoàn toàn nhận được nó để tra cứu một sản phẩm thành công được nêu ra. Dưới đây là một giao diện điều khiển bản in của những gì phương pháp của tôi thường làm, với ISBN đúng đã điền:

>>> 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 

Bây giờ tôi đoán tôi tò mò nếu đây là một số điều không minh bạch với PythonAnywhere, hoặc nếu tôi đã bỏ lỡ một cấu hình thiết lập trong Django? Theo như tôi có thể nói thông qua AWS và trang Amazon Associates, các phím của tôi là chính xác. Tôi không quá lo lắng về phân tích cú pháp tại thời điểm này, chỉ cần nhận được đối tượng. Tôi thậm chí đã cố gắng bỏ qua API và chỉ sử dụng Bottlenose (API mở rộng) nhưng tôi nhận được cùng một lỗi 400 kết quả.

Tôi thực sự mới đối với API của Django và Amazon, mọi hỗ trợ sẽ được đánh giá cao!

+2

Amazon đang trả lời bạn với lỗi 'Yêu cầu không hợp lệ'. Có nghĩa là, bạn có thể đang gửi thông tin không chính xác. hãy kiểm tra lại các phím của bạn ... – Incognos

Trả lời

10

Bạn vẫn chưa ủy quyền tài khoản của mình để truy cập API. Để làm như vậy, bạn có thể truy cập https://affiliate-program.amazon.com/gp/advertising/api/registration/pipeline.html

+1

Bạn đã hoàn toàn chính xác, cảm ơn vì đã giúp phát hiện ra bước dễ dàng này! Tôi xin lỗi vì sự chấp thuận muộn. – tsuko

+0

Một vấn đề khác có thể gây ra cùng một lỗi là khi bạn có nhiều tài khoản AWS và đang sử dụng các khóa API cho tài khoản đã đăng ký bằng một email khác với tài khoản bạn đăng ký cho chương trình liên kết. – drcursor

+0

Tôi biết đã khá lâu kể từ khi có câu trả lời nhưng một điểm khác có thể là API tìm kiếm miền .com. Vì vậy, nếu bạn đang tìm kiếm trong .co.uk hoặc .de bạn phải xác định khu vực đầu tiên. – Nick

Các vấn đề liên quan