簡體   English   中英

Alamofire 4.0 RequestRetrier不應該被調用(_,retry,with,completion)

[英]Alamofire 4.0 RequestRetrier should(_,retry,with,completion) not being called

我正在使用Alamofire 4.0的RequestRetrier來控制對過期訪問令牌的請求的重試。 我在這里關注文檔。

我的實現與文檔OAuth2Handler的示例非常相似,該示例實現了RequestAdapterRequestRetrier

我遇到的問題是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.defaultfunc 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM