Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 481
Tamara Bernad Avatar asked Sep 20 '16 15:09

Tamara Bernad


2 Answers

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.

like image 186
crisisGriega Avatar answered Sep 21 '22 07:09

crisisGriega


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
like image 26
Ashildr Avatar answered Sep 20 '22 07:09

Ashildr