2011-07-05 2 views
20

기본 인증과 함께 groovy의 http-builder를 사용할 때 기본적으로 인증되지 않은 요청을 보내고 처음에 401을 수신 한 후 자격 증명으로 요청을 다시 보내야합니다. Apache의 Httpclient는 첫 번째 요청시 직접 자격 증명을 전송하기 위해 preemptive authentication을 제공합니다. Groovy의 http-builder에서 선점 형 인증을 사용하려면 어떻게해야합니까? 모든 코드 예제는 높이 평가됩니다.groovy http-builder를 선점 모드로 사용

답변

31

JIRA issue을 바탕으로 당신이 그런 식으로 뭔가를 할 수 있습니다

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

정확히 100 %로 멋있는 스타일을 해결할 수 있습니다. 고마워! –

+1

아름답다. 선불 모드 설정없이 Spring Security Grails 플러그인과 기본 인증을 사용하여 잘못된 (겉으로보기에는 무해하지만 귀찮은) 500 개의 오류가 발생했습니다. 이 문제가 해결되었습니다. ('ISO-8859- 수입 org.apache.http.HttpRequestInterceptor 수입 org.apache.http.HttpRequest – ed209

28

또한 내가위한 살펴 봤는데 어떤

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

또한, 수입 org.apache.http.protocol.HttpContext'getBytes : 나는 다음과 같은 수입을 추가했다 참고 1 ')'은 단순히'bytes'로 대체 될 수 있습니다. –

+0

다른 어떤 것도 나를 위해 일한 것이 없습니다. 선생님은 업보를 얻습니다. –

관련 문제