小编典典

python urllib2基本身份验证

python

嗨,我正尝试使用python使用urllib2访问API URL:

import urllib2

url = 'https://XXXXXXXXXX.com/'
username = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
password = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
pagehandle = urllib2.urlopen(url)

我不知道领域是什么,但假设我可以使用默认值,即无。

无论如何,我仍然会收到401错误:

追溯(最近一次通话最新):文件“ test5.py”,第12行,在pagehandle = urllib2.urlopen(url)文件“
/usr/lib/python2.6/urllib2.py”,第126行,在urlopen返回_opener .open(URL,数据,超时)文件“
/usr/lib/python2.6/urllib2.py”,第397行,打开时响应= meth(req,response)文件“
/usr/lib/python2.6/urllib2
.py“,第510行,位于http_response’http’中,请求,响应,代码,msg,hdrs)文件“
/usr/lib/python2.6/urllib2.py”,第435行,错误返回self._call_chain(
args)_call_chain中第369行的文件“ /usr/lib/python2.6/urllib2.py” = func(

args)在第518行的“
/usr/lib/python2.6/urllib2.py”文件http_error_default引发HTTPError(req.get_full_url(),代码,msg,hdrs,fp)urllib2.HTTPError:HTTP错误401:未经授权

因此似乎认证有问题。是否最有可能使用领域=无?

谢谢!


阅读 225

收藏
2021-01-20

共1个答案

小编典典

我无法弄清楚为什么此方法不起作用,但是我成功使用以下代码调用了API:

base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')

request = urllib2.Request(url)

request.add_header("Authorization", "Basic %s" % base64string)

result = urllib2.urlopen(request)
        data = result.read()
2021-01-20