Der folgende Code die Benutzer nicht authentifizieren (kein Authentifizierungsfehler passiert, aber der Aufruf fehlschlägt fehlende Berechtigungen aufgrund):Warum funktioniert HTTPBuilder Basic Auth nicht?
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 ?: [:]
}
}
Aber die folgenden funktioniert:
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 ?: [:]
}
}
Warum isn arbeitet der erste?
Wie funktioniert es nicht? Der Server sollte einen HTTP 401-Statuscode zurückgeben, um die Basisauthentifizierung auszulösen. HttpBuilder sendet dann eine zweite Anfrage mit dem Authorization-Header. – ataylor
Es funktioniert einfach nicht. Die Anfrage selbst kehrt mit einer Nachricht zurück, die besagt, dass der Benutzer keine Berechtigung zum Ausführen der Operation hat. Ich kann den Benutzernamen und das Passwort auf etwas völlig Ungültiges ändern und das Gleiche passiert. –
Dies sollte möglicherweise Ihr Problem lösen http://StackOverflow.com/Questions/6588256/using-groovy-http-builder-in-preemptive-mode –