Alamofire 超时不起作用
Posted
技术标签:
【中文标题】Alamofire 超时不起作用【英文标题】:Alamofire timeout not working 【发布时间】:2017-03-13 08:58:09 【问题描述】:在我的应用程序中,我使用 Alamofire 进行网络请求,并创建了一个类。这里是课堂
class MGNetworking: NSObject
private class func getAlamofireManager() -> SessionManager
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForResource = 180 // seconds
configuration.timeoutIntervalForRequest = 180 // seconds
let alamofireManager = Alamofire.SessionManager(configuration: configuration)
return alamofireManager
class func requestGETURL(_ strURL: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void)
getAlamofireManager().request(strURL,method: .get).responseJSON (responseObject) -> Void in
if responseObject.result.isSuccess
let resJson = JSON(responseObject.result.value!)
success(resJson)
if responseObject.result.isFailure
let error : Error = responseObject.result.error!
failure(error)
class func requestPOSTURL(_ strURL : String, params : [String : AnyObject]?, headers : [String : String]?, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void)
getAlamofireManager().request(strURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON (responseObject) -> Void in
if responseObject.result.isSuccess
let resJson = JSON(responseObject.result.value!)
success(resJson)
if responseObject.result.isFailure
let error : Error = responseObject.result.error!
failure(error)
我想更改我的网络请求的超时时间。我创建了方法getAlamofireManager()
,但是当我调用这个方法时,我的请求在这里被取消是错误的。
FAILURE: Error Domain=NSURLErrorDomain Code=-999 "cancelled"
当我将 getAlamofireManager()
更改为 Alamofire.request
时,它开始完美运行。
【问题讨论】:
如果你想设置属性,不要忘记配置对象应该是可变的(var)。目前是让。 这个问题你解决了吗? 【参考方案1】:我可以假设问题与this 报告的问题有关。
让我们重写代码:
class MGNetworking: NSObject
var manager: SessionManager?
init()
manager = getAlamofireManager()
private class func getAlamofireManager() -> SessionManager
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForResource = 180 // seconds
configuration.timeoutIntervalForRequest = 180 // seconds
let alamofireManager = Alamofire.SessionManager(configuration: configuration)
return alamofireManager
所以现在使用manager
代替getAlamofireManager()
来处理请求
【讨论】:
@pmb 你用的是什么网址? Http或Https 我正在使用 https以上是关于Alamofire 超时不起作用的主要内容,如果未能解决你的问题,请参考以下文章