2015-02-07 38 views
0

我试图在Http头添加身份验证,然后做一个http post,目标url是这样一个Github API:https://api.github.com/user,下面的代码总是响应401,未经授权,我的问题是,如何在头中添加身份验证?我的方式是否正确?http post如何在python中添加身份验证

username = raw_input('Github name: ') 
token = raw_input('Access Token: ') 
url = 'https://api.github.com/user' 
values = {"Username":username,"Password":token} 
data = urllib.urlencode(values) 
req = urllib2.Request(url,data) 
response = urllib2.urlopen(req) 
the_page = response.read() 
+1

HTTPS://gist.github .com/kennethreitz/973705看起来相当适用.. – 2015-02-07 00:50:29

回答

0

您应该使用urllib2.HTTPPasswordMgrWithDefaultRealm()这样的:

import urllib2 


gh_url = 'https://api.github.com' 

req = urllib2.Request(gh_url) 

password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm() 
password_manager.add_password(None, gh_url, 'user', 'pass') 

auth_manager = urllib2.HTTPBasicAuthHandler(password_manager) 
opener = urllib2.build_opener(auth_manager) 

urllib2.install_opener(opener) 

handler = urllib2.urlopen(req) 

这是一种方式来考虑使用requests库 - 它更容易这样:

import requests 

r = requests.get('https://api.github.com', auth=('user', 'pass'))