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

空扰寡人 提交于 2019-12-10 01:13:57

问题


I am using the RequestRetrier of Alamofire 4.0 to control the retrying of requests for expired access token. I am following the documentation here.

I have a very similar implementation to the example available in the documentation OAuth2Handler which implements RequestAdapter and RequestRetrier.

The issue I am encountering is that func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) is never being called. The adapt method of the RequestAdapter implementation does get called though.

Debugging, I see that SessionDelegate only calls should(_,retry,with,completion) when there is an error, but requests that return status codes related to Authorization issues, don't seem to generate errors, so that method never gets called.

Am I missing something here?


回答1:


Maybe you are not getting an error. 400 responses aren't considered as error by Alamofire. In case you want get an error when receiving a 400 code you should chain validate() to the request. If this is your case you can find more information here.




回答2:


Following the example in the documentation exactly , mine didn't work.I was already using validate() as shown in the example.

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

sessionManager.request(urlString).validate().responseJSON { response in
debugPrint(response)
}

Although , after replacing SessionManager() with Alamofire.SessionManager.default , the method func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) gets invoked.

let sessionManager = Alamofire.SessionManager.default


来源:https://stackoverflow.com/questions/39598030/alamofire-4-0-requestretrier-should-retry-with-completion-not-being-called

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!