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



我使用Alamofire 4.0的RequestRetrier来控制过期访问令牌请求的重试。我在这里遵循文档。

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

我遇到的问题是func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)从未被调用。RequestAdapter实现的adapt方法会被调用。

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

我错过了什么吗?

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

完全按照文档中的示例操作,我的示例不起作用。我已经使用了validate(),如示例所示。

let sessionManager = SessionManager()
sessionManager.adapter = oauthHandler
sessionManager.retrier = oauthHandler
let urlString = "(baseURLString)/some/endpoint"
sessionManager.request(urlString).validate().responseJSON { response in
debugPrint(response)
}

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

let sessionManager = Alamofire.SessionManager.default

最新更新