如何向Python REST请求添加基本身份验证?

如何向Python REST请求添加基本身份验证?,python,web-services,authentication,rest,http-post,Python,Web Services,Authentication,Rest,Http Post,我有以下简单的Python代码,可以向REST服务发出简单的post请求- params= { "param1" : param1, "param2" : param2, "param3" : param3 } xmlResults = urllib.urlopen(MY_APP_PATH, urllib.urlencode(params)).read() results = MyResponseParser.parse(xmlResults) 问题是,

我有以下简单的Python代码,可以向REST服务发出简单的post请求-

params= { "param1" : param1,
          "param2" : param2,
          "param3" : param3 }
xmlResults = urllib.urlopen(MY_APP_PATH, urllib.urlencode(params)).read()
results = MyResponseParser.parse(xmlResults)

问题是,用于调用REST服务的url现在需要基本身份验证(用户名和密码)。如何尽可能简单地将用户名和密码/基本身份验证合并到此代码中?

如果基本身份验证=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
发出额外的登录请求。但是,如果您访问的服务有一个XMLAPI,那么这个API肯定也包括auth


2016年编辑:请务必使用该库!它在一次调用中提供了上述所有功能。

您可能需要一个库来提取一些细节。我以前用过很好的效果。它处理HTTP身份验证。

它不可以作为
params
字典的一部分传递所需的参数吗?或者您的目标服务是否要求您进行另一次显式调用以进行身份验证?