gpt4 book ai didi

count - Alamofire:如何只重试一次请求

转载 作者:行者123 更新时间:2023-12-04 12:18:54 24 4
gpt4 key购买 nike

我正在采用 RequestAdapterRequestRetrier 自动将刷新 token 行为添加到我的请求中。无限重试的问题无法控制。我有这段代码:

class AuthHandler: RequestAdapter, RequestRetrier {

func adapt(_ urlRequest: URLRequest) throws -> URLRequest {

return urlRequest

}

public func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {

if let response = request.task?.response as? HTTPURLResponse, response.statusCode == 401 {

_ = Credential.current.renew({ (credential, error) in
completion(true, 0.0) /// Retry request
})

} else {

completion(false, 0.0) // Don't retry

}

}

}

请求失败后如何只重试一次?

我试过这个:

request.retryCount = 1

但不起作用...有什么想法吗?

谢谢!

最佳答案

retryCount 是只读的。 retryCount 的描述是:

The number of times the request has been retried.

因此,您需要做的就是检查此重试次数,如果 retryCount 太高,则停止重试。

要在重试一次后停止,此代码可以工作:

class AuthHandler: RequestAdapter, RequestRetrier {

func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
return urlRequest
}

public func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {

guard request.retryCount == 0 else { return completion(false, 0) } // relevant change

if let response = request.task?.response as? HTTPURLResponse, response.statusCode == 401 {

_ = Credential.current.renew({ (credential, error) in
completion(true, 0) /// Retry request
})

} else {
completion(false, 0.0) // Don't retry
}
}
}

注意:第一次重试请求时,其retryCount 为 0。在我们上面的代码中,我们确保它仅在第一次重试时,其中retryCount == 0

关于count - Alamofire:如何只重试一次请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42878274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com