authenticationgroovyhttpbuilder

using groovy http-builder in preemptive mode


When using groovy's http-builder with basic authentication the default behavior is to send an unauthenticated request first and resend the request with credentials after receiving a 401 in the first place. Apache's Httpclient offers preemptive authentication to send the credentials directly on the first request. How can I use preemptive auth in Groovy's http-builder? Any code examples are appreciated.


Solution

  • Based on a JIRA issue you can do something like that :

    def http = new RESTClient('http://awesomeUrl/')
    
    http.client.addRequestInterceptor(new HttpRequestInterceptor() {
        void process(HttpRequest httpRequest, HttpContext httpContext) {
            httpRequest.addHeader('Authorization', 'Basic ' + 'myUsername:myPassword'.bytes.encodeBase64().toString())
        }
    })
    
    def response = http.get(path: "aResource")
    
    println response.data.text