如何在Python中发送身份验证和HTTP请求?

时间:2012-08-09 18:37:43

标签: python twitter

我是Python新手,我一直在尝试连接Twitter的公共数据流作为练习项目。我已经走到了这一步:

>>> import urllib2
>>> url = urllib2.urlopen("https://stream.twitter.com/1/statuses/sample.json")
Trackback...(omitted)
urllib2.HTTPError: HTTP Error 401: Unauthorized

预计会出现401错误,但我对如何向前移动感到不知所措。我目前正在阅读Twitter身份验证API文档,他们推荐第三方库,我可以这样做,但我想避免,因为我真的想知道发生了什么。我想你必须把OAuth数据放在标题中?我应该使用add_header()?

1 个答案:

答案 0 :(得分:2)

您发布的链接需要HTTP身份验证:

>>> from urllib2 import *
>>> password_mgr = HTTPPasswordMgrWithDefaultRealm()
>>> url = "https://stream.twitter.com/1/statuses/sample.json"
>>> password_mgr.add_password(None, url, 'USERNAME', 'PASSWORD')
             #worked with my real twitter credentials ^ 
>>> h = HTTPBasicAuthHandler(password_mgr)
>>> opener = build_opener(h)
>>> page = opener.open(url)
>>> page.getcode()
200

请参阅this