简体   繁体   中英

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

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?

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 .

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM