2013-03-17 2 views
1

저는 Groovy HTTPBuilder를 사용하여 응용 프로그램을 빌드하고 있습니다. 401을 처리하는 데 다소 어려움이 있습니다. 몇 분마다 내 인증 쿠키가 무효화되고 (요청 401 반환) 갱신해야합니다. 일부 리소스 (토큰/새로 고침)를 요청한 다음 원래 요청을 반복하여 수행합니다. 응답을 정의 할 수 있음을 알고 있습니다. '401 '실패 종결 자.하지만 모든 요청에 ​​반복해서 지정하고 싶지는 않습니다. 나는 더 투명하게하고 싶다. 인증 전략 (기본, oauth, 다이제스트 등)이 이미 있음을 확인했지만 그 중 어느 것도 나에게 적합하지 않으며 새로운 것을 구현하는 것이 많은 작업처럼 보입니다. 응답 상태를 확인할 수있는 responseInterceptor를 정의하고 싶습니다. 401이라면 토큰 갱신 요청을 발행 한 다음 원래 요청을 반복합니다 (모두 해당 인터셉터에서 수행됩니다) 이 방법이 가능합니까?HTTPBuilder/RESTClient 401 처리

답변

0

메타 프로그래밍을 사용하고 상태 401을 처리하여 request 메서드 호출을 가로채는 것은 어떻게됩니까?

내가 지금 테스트 할 수 없습니다, 그래서 난 장님 촬영하려고합니다 :

import groovyx.net.http.HTTPBuilder 
import static groovyx.net.http.Method.GET 
import static groovyx.net.http.ContentType.TEXT 

def oldRequest = HTTPBuilder.&request 

HTTPBuilder.metaClass.request = { method1, method2, clos -> 
    println "handler" 
    def authErrorClos = { 
    response.'401' = { 
     // handle 
    } 
    } 

    authErrorClos.delegate = oldRequest 

    authErrorClos() 

    oldRequest method1, method2, clos 

}