HTTPBuilder / RESTClient 401处理

时间:2013-03-17 22:15:49

标签: groovy apache-httpclient-4.x httpbuilder

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

1 个答案:

答案 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

}