2017-07-17 99 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'标头发送,但就我所知,这是唯一的。 –