我多次使用session.dataTask从我的应用程序中的服务器检索数据,但是在此ViewController中,我不知道为什么未启动session.dataTask,我的服务器没有收到请求,因此响应为nil ... 我正在使用完全相同的功能,该功能来自我应用程序的另一部分,运行正常,但无法找到解决方案...
以下是初始通话:
let refreshAlert = UIAlertController(title: "Choix ", message: "\nVoulez vous que l'on choisisse pour vous ?", preferredStyle: UIAlertControllerStyle.alert)
refreshAlert.addAction(UIAlertAction(title: "Non, je le choisis manuellement", style: .cancel, handler: { (action: UIAlertAction!) in
//do something
}))
refreshAlert.addAction(UIAlertAction(title: "Oui", style: .default, handler: { (action: UIAlertAction!) in
DispatchQueue.main.async(execute: {
self.getRandom()
})
//I also tried to call without dispatch but same result
}))
present(refreshAlert, animated: true, completion: nil)
这是函数
func getRandom(){
let url_to_request = "\(SERVER)/GetRandom"
let url:URL = URL(string: url_to_request)!
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 30.0
configuration.timeoutIntervalForResource = 60.0
let session = Foundation.URLSession(configuration: configuration,
delegate: self,
delegateQueue:OperationQueue.main)
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
request.timeoutInterval = 10
let task = session.dataTask(with: request, completionHandler: {
(
data, response, error) in
print("request: \(request)")
print("Response: \(response)")
let res = response as! HTTPURLResponse
print("Status Code : \(res.statusCode)")
guard let _:Data = data, let _:URLResponse = response, error == nil else {
print("error data")
return
}
print("data: \(data?.debugDescription)")
})
task.resume()
}
在这种情况下,响应为零...在另一个ViewController中,此代码是正确的。...
我也将我的课程添加为URLSessionDelegate
知道为什么我的session.dataTask不被触发(没有错误)吗?