Я использую SessionManager Alamofire для запросов на мои услуги API.Alamofire, Session Manager limit retry count
Есть ли способ ограничить количество повторных попыток в Alamofire?
Я использую новые протоколы RequestAdapter и RequestTrier, чтобы обеспечить механизм повтора в Alamofire v4.
Я хочу ограничить количество попыток до 5. Если после 5 повторных попыток новый запрос не должен быть выполнен.
class VMRetrier: RequestAdapter, RequestRetrier {
public func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
return urlRequest;
}
func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {
if let response = request.task?.response as? HTTPURLResponse, response.statusCode == 401 {
VMLogger.shared.debug(message: "Trying to get a token")
let _ = AuthService.shared.login(email: "[email protected]", password: "test34")
.then(execute: { (response) in
completion(true, 0.0)
})
}
else {
completion(false, 0.0)
}
} }
Использование:
internal let sessionManager = SessionManager()
override init() {
super.init()
sessionManager.adapter = VMRequestAdapter()
sessionManager.retrier = VMRetrier()
}
UPDATE Существует новый совершить в alamofire, чтобы обеспечить вариант подсчета повторных попыток. Alamofire Commit
Вы нашли какие-либо решения? – Footjy
см. Мое обновление – aymeba