下面的代碼不驗證用戶(無身份驗證失敗情況發生,但調用失敗,由於缺乏權限):爲什麼HTTPBuilder基本身份驗證不起作用?
def remote = new HTTPBuilder("http://example.com")
remote.auth.basic('username', 'password')
remote.request(POST) { req ->
uri.path = "/do-something"
uri.query = ['with': "data"]
response.success = { resp, json ->
json ?: [:]
}
}
但以下工作正常:
def remote = new HTTPBuilder("http://example.com")
remote.request(POST) { req ->
uri.path = "/do-something"
uri.query = ['with': "data"]
headers.'Authorization' =
"Basic ${"username:password".bytes.encodeBase64().toString()}"
response.success = { resp, json ->
json ?: [:]
}
}
爲什麼ISN第一個工作嗎?
它是如何失敗?服務器應該返回一個HTTP 401狀態碼來觸發基本認證。然後HttpBuilder將發送第二個請求和授權標頭。 – ataylor
它只是不起作用。請求本身會返回一條消息,指出用戶沒有執行該操作的權限。我可以將用戶名和密碼更改爲完全無效的內容,併發生相同的情況。 –
這應該有可能解決您的問題 http://stackoverflow.com/questions/6588256/using-groovy-http-builder-in-preemptive-mode –