【问题标题】:HTTPBuilder/RESTClient 401 handlingHTTPBuilder/RESTClient 401 处理
【发布时间】:2013-03-06 04:52:17
【问题描述】:
我正在使用 groovy HTTPBuilder 构建应用程序,但我有点卡在处理 401 上。在我的应用程序中,我的身份验证 cookie 每隔几分钟就会失效(请求返回 401),我必须通过请求一些资源来更新它(说 /token/refresh) 然后重复原始请求..
我知道我可以定义 response.'401' 失败关闭,但我不想一遍又一遍地在每个请求中指定它。我想更透明地做到这一点。
我检查了已经有一些身份验证策略(basic、oauth、digest、...),但它们都不适合我,实施新的东西似乎需要做很多工作。
我想定义一些 responseInterceptor 来检查响应状态,如果是 401,我会发出令牌更新请求,然后重复原始请求(所有这些都将在该拦截器中完成)
这有可能吗?
【问题讨论】:
标签:
groovy
apache-httpclient-4.x
httpbuilder
【解决方案1】:
如何使用元编程拦截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
}