在iOS 10上的swift 3中指定的间隔后,URLSession没有超时

时间:2017-05-03 12:26:48

标签: ios swift nsurlsession

我试图通过urlsession在swift3中点击Json请求。请求在10秒后没有超时

let request = NSMutableURLRequest(url: NSURL(string:url )! as URL,
                                          cachePolicy: .useProtocolCachePolicy,
                                          timeoutInterval: 10.0 )
        request.httpMethod = "POST"
        request.allHTTPHeaderFields = headers
        request.httpBody = RequestBody
        let configuration =
            URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = 10
        configuration.timeoutIntervalForResource = 10
        let session = URLSession(configuration: configuration, delegate: self as? URLSessionDelegate, delegateQueue:OperationQueue.main)
        let dataTask = session.dataTask(with: request as URLRequest) {
            (data, response, error) in...


}

1 个答案:

答案 0 :(得分:1)

问题是您从未真正启动网络请求。 您需要调用dataTask.resume()来实际启动请求。这需要在关闭后立即发生,请参阅下面的代码:

guard let url = URL(string: urlString) else { return }
let request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0 )
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = RequestBody

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest) {
            (data, response, error) in...

}
dataTask.resume()