【发布时间】:2017-02-04 09:55:36
【问题描述】:
我正在使用 Alamofire 的 SessionManager 向我的 API 服务发出请求。
有没有办法限制 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: "a@a.com", 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()
}
更新 alamofire 中有一个新的提交来提供重试计数选项。Alamofire Commit
【问题讨论】:
-
你找到解决办法了吗?
-
请看我的更新
-
感谢请求中包含
retryCount属性的信息