2012-08-09 91 views
0

我是Python的新手,我一直试图连接到Twitter的公共数据流,作为一个实践项目。这一步我已经得到了:如何在Python中发送身份验证和HTTP请求?

>>> 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()吗?

+0

这似乎是基本的HTTP认证,而不是OAuth的 – 2012-08-09 18:40:00

+0

什么呢? add_header()?或者你是在谈论twitter API,它需要OAuth,而不是基本的。 – 2012-08-09 18:41:35

回答

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

+0

感谢加比,男孩我觉得愚蠢:) – 2012-08-09 19:02:14

+0

你怎么能告诉它不需要OAuth? – 2012-08-09 19:03:14

+0

,因为我去了那个URL,并且收到了一个标准的HTTP认证表单:)别担心,它发生在我们所有人身上 – 2012-08-09 19:13:54

相关问题