Alamofire 4.0 RequestRetrier应该(_,retry,with,completion)不被调用
我正在使用Alamofire 4.0的RequestRetrier
来控制对过期访问令牌的请求的重试。 我在这里关注文档。
我对文档OAuth2Handler
的示例有一个非常类似的实现,它实现了RequestAdapter
和RequestRetrier
。
我遇到的问题是func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)
永远不会被调用。 然而, RequestAdapter
实现的adapt
方法会被调用。
调试时,我看到SessionDelegate
只在出现错误时调用should(_,retry,with,completion)
,但返回与授权问题相关的状态代码的请求似乎不会产生错误,因此永远不会调用该方法。
我在这里错过了什么吗?
也许你没有收到错误。 Alamofire
不会将400条回复视为错误。 如果您希望在收到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) }
虽然在用Alamofire.SessionManager.default
替换SessionManager()
Alamofire.SessionManager.default
,方法func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)
。
let sessionManager = Alamofire.SessionManager.default