我试图测试与需要我打算使用操作认证的Nexus服务器交互,但我还需要处理内部的代理服务器。

根据我的(有限的)认识我可以添加多个处理程序来开启器。但是我仍然得到一个401响应。我检查了用户名和密码是有效的。我不能肯定,如果需要cookies来做到这一点,如果又如何,他们会被包括在内。 任何建议?

baseUrl = 'server:8070/nexus-webapp-1.3.3/service/local'

params = {"[key]":"[value]"}

data = urllib.urlencode(params)

# create a password manager
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()

# Add the username and password as supplied
password_mgr.add_password(None, baseUrl, username, password)

handler = urllib2.HTTPBasicAuthHandler(password_mgr)
proxy_support = urllib2.ProxyHandler({})

# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(proxy_support, handler)
urllib2.install_opener(opener)

txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}

req = Request(protocol+url, data, txheaders)
handle = urlopen(req)

这是所得URLError的标头字段:

>HTTPMessage: Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=B4BD05C9582F7B27495CBB675A339724; Path=/nexus-webapp-1.3.3
WWW-Authenticate: NxBASIC realm="Sonatype Nexus Repository Manager API"
Content-Type: text/html;charset=utf-8
Content-Length: 954
Date: Fri, 03 Jul 2009 17:38:42 GMT
Connection: close

<强>更新 看来的Nexus实施的的Restlet的AuthenticationHelper 。感谢Alex我知道要寻找什么。

有帮助吗?

解决方案

您能告诉你得到401响应的完整标题?也许这不是一个基本身份验证的要求,也许是想自己的身份验证代理 - !这是很难猜测没有看到说头

修改:感谢示出报头(I重新格式化它们为 “代码” 否则它们是不可读)

正如我怀疑,它不希望“基本”,它想一些其他的(专有的Nexus ...?)“NxBASIC”认证协议 - 我从来没有听说过这件事(我不知道任何有关的Nexus)和我想象中既没有你使用(即使NxBASIC莫名其妙地接受了简单的基本身份验证,处理程序,只知道它是一个不同的协议知道的基本身份验证处理程序,不会提供这样的认证)。

所以,首先你需要准确地研究认为NxBASIC的事情是什么,为此,我怀疑所以用正确的代码问题可能的帮助。然后,根据你所学到的,来定义它的处理程序的有趣的问题... - !(

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top