[英]Alamofire 4.0 RequestRetrier should(_,retry,with,completion) not being called
我正在使用Alamofire 4.0的RequestRetrier
來控制對過期訪問令牌的請求的重試。 我在這里關注文檔。
我的實現與文檔OAuth2Handler
的示例非常相似,該示例實現了RequestAdapter
和RequestRetrier
。
我遇到的問題是func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)
應該永遠不會被調用func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)
。 該adapt
的方法RequestAdapter
實現並不被調用雖然。
調試時,我看到SessionDelegate
僅在出現錯誤時才should(_,retry,with,completion)
調用should(_,retry,with,completion)
,但是返回與Authorization問題相關的狀態代碼的請求似乎沒有生成錯誤,因此該方法永遠不會被調用。
我在這里想念什么嗎?
也許您沒有收到錯誤消息。 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)
方法func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion)
。
let sessionManager = Alamofire.SessionManager.default
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.