Alamofire 4.0 RequestRetrier应该(_,retry,with,completion)不被调用

Tam*_*nad 13 ios swift alamofire

我使用RequestRetrierAlamofire 4.0控制重试过期访问令牌的请求.我在这里关注文档.

我有一个非常类似于文档OAuth2Handler中可用的示例实现RequestAdapterRequestRetrier.

我遇到的问题func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)是永远不会被召唤.然而adapt,RequestAdapter实现的方法确实被调用了.

调试,我看到SessionDelegate只有should(_,retry,with,completion)在出现错误时调用,但返回与授权问题相关的状态代码的请求似乎不会产生错误,因此永远不会调用该方法.

我在这里错过了什么吗?

cri*_*ega 24

也许你没有收到错误.400响应不被视为错误Alamofire.如果您想在收到400代码时收到错误,您应该链接validate()到请求.如果是这种情况,您可以在此处找到更多信息.


Ash*_*ldr 12

完全按照文档中的示例,我没有工作.我已经在使用validate(),如示例中所示.

let sessionManager = SessionManager()
sessionManager.adapter = oauthHandler
sessionManager.retrier = oauthHandler
let urlString = "\(baseURLString)/some/endpoint"

sessionManager.request(urlString).validate().responseJSON { response in
debugPrint(response)
}
Run Code Online (Sandbox Code Playgroud)

虽然,更换后SessionManager()Alamofire.SessionManager.default,该方法func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) 被调用.

let sessionManager = Alamofire.SessionManager.default
Run Code Online (Sandbox Code Playgroud)