1

我正在使用 groovy HTTPBuilder 构建应用程序,但我有点卡在处理 401 上。在我的应用程序中,我的身份验证 cookie 每隔几分钟就会失效(请求返回 401),我必须通过请求一些资源来更新它(比如 /token /refresh) 然后重复原始请求。我知道我可以定义 response.'401' 失败关闭,但我不想一遍又一遍地在每个请求中指定它。我想更透明地做到这一点。我检查了已经有一些身份验证策略(basic、oauth、digest、...),但它们都不适合我,实施新的东西似乎需要做很多工作。我想定义一些 responseInterceptor 来检查响应状态,如果是 401,我

4

1 回答 1

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

}
于 2013-03-18T12:20:55.030 回答