我正在使用groovy HTTPBuilder构建应用程序,我有点坚持处理401.在我的应用程序每隔几分钟我的身份验证cookie失效(请求返回401),我必须通过请求一些资源来更新它(说/ token / refresh)然后重复原始请求.. 我知道我可以定义response.'401'失败关闭,但我不想一遍又一遍地在每个请求中指定它。我想更透明地做。 我检查过已经有一些身份验证策略(基本的,oauth,digest,...)但是它们都不适合我,并且实现新的东西似乎需要很多工作。 我想定义一些responseInterceptor,我可以检查响应状态,如果它是401,我会发出令牌续订请求,然后重复原始请求(所有这些都将在该拦截器中完成) 这有点可能吗?
答案 0 :(得分:0)
如何使用元编程拦截request
方法调用并处理状态401呢?
我现在无法测试,所以我会尝试盲目拍摄:
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
}