我正在尝试生成摘要授权标头,以便在python测试用例中使用。由于代码库的工作方式,重要的是我能够将标头作为字符串。 这个标题看起来像这样
Authorization: Digest username="the_user", realm="my_realm", nonce="1389832695:d3c620a9e645420228c5c7da7d228f8c", uri="/some/uri", response="b9770bd8f1cf594dade72fe9abbb2f31"
我认为我最好的选择是使用urllib2或请求库。
使用urllib2,我已经走到了这一步:
au=urllib2.HTTPDigestAuthHandler()
au.add_password("my_realm", "http://example.com/", "the_user", "the_password")
但我无法从中得到标题。
根据要求,我已经做到了这一点:
requests.HTTPDigestAuth("the_user", "the_password")
但是当我尝试使用它时,在请求中,我遇到了设置领域的错误,我无法弄清楚该怎么做
答案 0 :(得分:3)
如果你准备好扭曲自己,你可以通过这样的事情得到requests.auth.HTTPDigestAuth
课程给你正确的答案:
from requests.auth import HTTPDigestAuth
chal = {'realm': 'my_realm', 'nonce': '1389832695:d3c620a9e645420228c5c7da7d228f8c'}
a = HTTPDigestAuth('the_user', password)
a.chal = chal
print a.build_digest_header('GET', '/some/uri')
如果我使用'the_password'
作为用户的密码,则可以得到以下结果:
Digest username="the_user", realm="my_realm", nonce="1389832695:d3c620a9e645420228c5c7da7d228f8c", uri="/some/uri", response="0b34daf411f3d9739538c7e7ee845e92"