我試圖測試與Nexus服務器的交互,該服務器需要對我打算使用的操作進行身份驗證,但我還需要處理內部代理服務器。使用httplib2處理身份驗證和代理服務器
基於我(有限)的理解,我可以添加多個處理程序的開罐器。不過,我仍然收到了401迴應。我檢查了用戶名和密碼是否有效。我不確定是否需要cookie來做到這一點,如果是的話,他們將如何包含它們。 有什麼建議嗎?
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's AuthenticationHelper的定製版本。感謝Alex,我知道該找什麼。
謝謝亞歷克斯,更新了問題 – 2009-07-03 17:41:04