2012-08-10 37 views
2

到目前爲止我的代碼:requests.get懸垂挺括與Twitter的API(Python的請求庫)

import requests 
import json 

url = "https://stream.twitter.com/1/statuses/sample.json" 

r = requests.get(url, auth = ('username', 'password')) 
print r.status_code 

當我運行在它使掛控制檯這個腳本,但是當我運行等同的urllib2我得到一個良好的迴應:

from urllib2 import * 

password_mgr = HTTPPasswordMgrWithDefaultRealm() 
url = "https://stream.twitter.com/1/statuses/sample.json" 
password_mgr.add_password(None, url, 'username', 'password') 
h = HTTPBasicAuthHandler(password_mgr) 
opener = build_opener(h) 
page = opener.open(url) 
print page.getcode() 

這將返回200。任何人都有什麼想法是什麼問題?

編輯另外,當我在上面的代碼中調整密碼時,我得到相應的401響應。我認爲這樣做的原因是有一些阻塞正在進行?

回答

0

不確定您是否可以按照您的方式調用requests.get。如果傳遞參數,則需要包含一個字典。像這樣?

auth = {'username': 'username', 'password': 'password'} 
r = requests.get("https://stream.twitter.com/1/statuses/sample.json", params=auth) 
print r.status_code 

閱讀此鏈接的整體正確的方式來使用requests.get http://docs.python-requests.org/en/latest/user/quickstart/

+0

編輯:沒關係,它再次給我401。我想你必須在「auth」參數中傳遞用戶名/密碼組合。 – 2012-08-10 17:42:54

1

我有這個問題爲好,它不僅影響請求版本> 0.13.5。 要修復,請禁用requests.get調用預取:

r = requests.get(url, auth = ('username', 'password'), prefetch=False) 
+1

這爲什麼解決這個問題?根據文檔,prefetch已經默認爲False。 – Ponkadoodle 2014-01-21 23:50:21