2015-11-14 26 views
6

Lấy cảm hứng từ this Yelp tutorial, tôi đã tạo một tập lệnh để tìm kiếm tất cả các phòng tập thể dục trong một thành phố nhất định. Tôi đã chỉnh sửa kịch bản với these updates để trả về tất cả phòng tập thể dục, không chỉ là 20. Bạn có thể tìm thấy gist here. SEARCH_LIMIT là 20.Yêu cầu không hợp lệ từ Yelp API

Tôi gặp phải lỗi Yêu cầu không hợp lệ. Tôi đã làm theo hướng dẫn của Yelp khá chặt chẽ, và không chắc chắn về những gì nó có thể đến từ - Tôi chắc rằng yêu cầu được mã hóa chính xác và tất cả các khóa API của tôi đều đúng.

Các in ra là dưới đây:

Traceback (most recent call last): 
    File "YelpSearch.py", line 97, in <module> 
    query_api() 
    File "YelpSearch.py", line 74, in query_api 
    response = search_yelp(offset) 
    File "YelpSearch.py", line 67, in search_yelp 
    return request(API_HOST, SEARCH_PATH, url_params=url_params) 
    File "YelpSearch.py", line 53, in request 
    conn = urllib2.urlopen(signed_url, None) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen 
    return _opener.open(url, data, timeout) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open 
    response = meth(req, response) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error 
    return self._call_chain(*args) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain 
    result = func(*args) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 400: Bad Request 

Trả lời

1

Trong ví dụ params tìm kiếm mà họ thay dấu cách bằng + dấu:

'term': term.replace(' ', '+'), 
'location': location.replace(' ', '+'), 

Trong ý chính của bạn, bạn đã hardcoded vị trí như: 'New York, NY', thay đổi không gian để + nên giúp.

+0

Điều đó không thay đổi bất cứ điều gì – NumenorForLife

1

API Yelp có giới hạn. Bạn có thể nhận tối đa 20 mục cho mỗi yêu cầu. Ngoài ra, số lượng mặt hàng có thể truy cập là 1000. Tôi không thể tìm thấy thông tin về các giới hạn trên documentation. Nhưng, tôi đã tìm thấy thông tin về các giới hạn này trên support group. Dựa trên điều này, bạn có thể nhận tối đa 1000 mục cho 50 yêu cầu ([1, ..., 20], [21, ..., 40], ... [981, ..., 1000])

Về đoạn trích của bạn, bạn đang cố gắng nhận được hơn 1000 mục. Tôi phát hiện ra rằng giới hạn của bạn và các thông số bù đắp. limit = 3, offset = 1000. Nó có nghĩa là bạn muốn nhận các vật phẩm từ 1001 đến 1003. Và nó mâu thuẫn với tài liệu.

HTTP Error 400: Bad Request có nghĩa là bạn nhận được phản hồi

{ 
    error: { 
    field: "offset", 
    description: "The maximum number of accessible results is 1000", 
    id: "INVALID_PARAMETER", 
    text: "One or more parameters are invalid in request" 
    } 
} 

Nếu bạn mở signed_url cuối cùng của bạn trên trình duyệt, bạn sẽ thấy phản ứng như trên. Ngoài ra, bạn sẽ thấy Mã trạng thái phản hồi là 400 Bad Request.

+0

Bạn khuyên bạn nên sửa chữa nó sau đó như thế nào? – NumenorForLife

+0

Bạn nghĩ gì về những người ủng hộ. Tôi nghĩ rằng họ có thể giúp bạn. –

+0

Tôi không hiểu – NumenorForLife

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