2011-07-05 7 views
20

Podczas korzystania z budowniczego http groovy z podstawowym uwierzytelnianiem domyślnym zachowaniem jest wysłanie nieuwierzytelnionego żądania w pierwszej kolejności i ponowne wysłanie żądania z danymi uwierzytelniającymi po otrzymaniu 401 w pierwszej kolejności. Httpclient Apache oferuje preemptive authentication wysyłanie poświadczeń bezpośrednio przy pierwszym żądaniu. Jak korzystać z autodostawcy w budowniczym http Groovy? Dozwolone są przykłady kodu.za pomocą groovy http-builder w trybie prewencyjnym

Odpowiedz

31

Na podstawie JIRA issue można zrobić coś takiego:

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 
+1

dokładnie 100%, co ja szukać. dzięki! –

+1

piękne. Stawałem się błędnym (i pozornie nieszkodliwym, ale denerwującym) 500 błędami z wtyczką Spring Security Grails i podstawowym auth bez ustawionego trybu prewencyjnego. To naprawiło to. Uwaga musiałem dodać następujące Import: importu org.apache.http.HttpRequestInterceptor import org.apache.http.protocol.HttpContext import org.apache.http.HttpRequest – ed209

28

Można go również rozwiązać stylu groovy z

http = new RESTClient('http://awesomeUrl/') 
http.headers['Authorization'] = 'Basic '+"myUsername:myPassword".getBytes('iso-8859-1').encodeBase64() 
+1

Również 'getBytes (" iso-8859- 1 ') 'można zastąpić po prostu' bajtów'. –

+0

Nic więcej nie działało dla mnie. Poproszę o uprowadzenie. –