5

您好我正在尝试使用 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, data, timeout) 文件“/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) 文件“/usr/lib/python2.6/urllib2.py”,第 369 行,在 _call_chain 结果 = func(*args) 文件“/usr/lib/python2.6/urllib2.py”,第 518 行,在http_error_default 引发 HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError:HTTP 错误 401:未经授权

所以看起来身份验证有问题。最有可能使用领域=无?

谢谢!

4

1 回答 1

8

我不知道为什么这种方法不起作用,但我成功地使用以下代码调用了 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()
于 2013-09-03T12:51:15.247 回答