私は、AlamofireのSessionManagerを使用してAPIサービスにリクエストしています。Alamofire、セッションマネージャリトライ回数制限
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