Ios 在swift中为每个API更新了almofire TimeoutinerValforRequest?
在我们的项目中,我们使用网络管理器来处理使用Alamofire的所有请求和响应。在alamofire中,默认的内部超时为30。但是我们需要将某些请求的“timeoutitervalforrequest”更改为50、60等Ios 在swift中为每个API更新了almofire TimeoutinerValforRequest?,ios,swift,networking,alamofire,Ios,Swift,Networking,Alamofire,在我们的项目中,我们使用网络管理器来处理使用Alamofire的所有请求和响应。在alamofire中,默认的内部超时为30。但是我们需要将某些请求的“timeoutitervalforrequest”更改为50、60等 private var manager : SessionManager? func sessionManager() -> SessionManager { if let manage = self.manager {
private var manager : SessionManager?
func sessionManager() -> SessionManager {
if let manage = self.manager {
return manage
}
else {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 30
self.manager = SessionManager(configuration: configuration, delegate: CustomSessionDelegate())
return self.manager!
}
}
我已经添加了param timeinterval并在其中设置了默认值
func sessionManager(timeoutInterval:Double = 30) -> SessionManager {
//passed the param
configuration.timeoutIntervalForRequest = timeoutInterval
}
但时间间隔值未更新。我的问题是如何使用此函数为每个请求更新SessionManager的超时间隔。我们可以使用每个API的超时时间间隔来实现它,但我希望它高于普通函数。您可以覆盖函数,如下所示:
func sessionManager(timeInterval : Double) -> SessionManager {
if let manage = self.manager {
return manage
}
else {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = timeInterval
self.manager = SessionManager(configuration: configuration, delegate: CustomSessionDelegate())
return self.manager!
}
}
它在每个Api调用中都可以正常工作,而不是设置timeoutIntervalForRequest,为什么不在URLRequest对象中设置timeoutInterval,然后将该请求传递到Alamofire函数中呢
let request = NSMutableURLRequest(url: URL(string: "")!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.timeoutInterval = 50
Alamofire.request(request as! URLRequestConvertible).responseJSON {
response in
// do whatever you want here
}
1.我们在第一个API中将TimeOutiterValforRequest设置为30,在第二个API中,调用if let块并执行timeout 30管理。通过这种方法,您可以为所有API调用设置自定义时间间隔,但当我尝试设置自定义时间间隔时。如果让manage=self.manager块被调用。