如何在Python REST请求中添加基本认证?
我有一段简单的Python代码,它用来向一个REST服务发送一个简单的请求 -
params= { "param1" : param1,
"param2" : param2,
"param3" : param3 }
xmlResults = urllib.urlopen(MY_APP_PATH, urllib.urlencode(params)).read()
results = MyResponseParser.parse(xmlResults)
现在的问题是,调用这个REST服务的链接需要基本的身份验证(也就是需要用户名和密码)。我该怎么把用户名和密码加到这段代码里,尽量简单一点呢?
2 个回答
1
你可能想要一个库来简化一些细节。我之前用过restkit,效果很好。它可以处理HTTP认证。
7
如果基本认证就是HTTP认证,那就用这个:
import urllib
import urllib2
username = 'foo'
password = 'bar'
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, MY_APP_PATH, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
params= { "param1" : param1,
"param2" : param2,
"param3" : param3 }
xmlResults = urllib2.urlopen(MY_APP_PATH, urllib.urlencode(params)).read()
results = MyResponseParser.parse(xmlResults)
如果不是,就需要用 mechanize
或 cookielib
来发起一个额外的请求进行登录。不过,如果你访问的服务有XML API,这个API肯定也包含了认证的部分。
2016年更新:一定要使用 requests 库!它可以在一次调用中完成以上所有操作。