2017-07-17 98 views
0

我想在一個Python程序中使用News API,並且出於某種原因,無論如何我都無法獲得200響應。我對這個請求庫相當陌生,所以也許我沒有做正確的事情,但這裏是我的代碼是什麼樣子:Python請求NewsAPI響應401每次

api = XXXXXXXXXX 

def get_json_response(apiKey, resource='google-news', sortBy='latest'): 
    url = 'https://newsapi.org/v1/articles' 
    headers = { 'source': resource, 
       'apiKey': apiKey, 
       'sortBy': sortBy} 

    r = requests.get(url, headers=headers) 
    print(r.status_code) 

get_json_response(api) 

,輸出始終是401 但是,什麼是奇怪的是,如果我只是在瀏覽器中輸入「https://newsapi.org/v1/articles/?source=google-news&apiKey=XXXXXXXXX」,它會給出正確的json響應,所以它在使用請求的過程中必須出錯。

任何想法?在此先感謝

編輯: 不完全是一個完美的解決方案,但我換了行:

r = requests.get(url + '/?source=' + resource + '&sortBy=' + sortBy + '&apiKey=' + apiKey) 

這工作,但我還是想知道如何正確使用請求包未來。

+0

只注意到谷歌新聞不允許最新的,但即便如此移除的分揀通過,問題仍然存在 – Zaya

回答

3

根據所提供的「工作」鏈接,它預計URL參數,而不是頭在其要求,所以:

def get_json_response(apiKey, resource='google-news'): 
    url = 'https://newsapi.org/v1/articles/' 
    params = {'source': resource, 
       'apiKey': apiKey} 
    r = requests.get(url, params=params) 
    print(r.status_code) 
    # etc. 
+0

這工作完美,謝謝! – Zaya

+0

實際上,您可以將API密鑰作爲'x-api-key'標頭髮送,但就我所知,這是唯一的。 –