我有这个功能来测试发送HTTP请求。
public func test(url: URL) {
print("test")
var request = URLRequest(url: url!)
request.httpMethod = "GET"
let session = URLSession.shared
session.dataTask(with: request) { data, response, err in
print("Entered the completionHandler")
guard err == nil else {
print("error calling GET")
print(err!)
return
}
}.resume()
}
我在测试中运行代码只是为了确保它发送请求。
并且它永远不会进入完成块(Entered the completionHandler
从未打印过)。我是Swift的新手,我错过了什么?
func test_download() {
myClient.test(url: URL(string:"https://www.google.com")!)
print("sleeping...")
sleep(10)
print("done...")
}
答案 0 :(得分:0)
您似乎没有正确使用关闭。试试这个:
// No need to explicitly set GET method since this is the default one.
let session = URLSession.shared
var request = URLRequest(url: url!)
session.dataTask(with: request) { (data, response, err) in
print("Entered the completionHandler")
guard err == nil else {
print("error calling GET")
return
}
// Do whatever you need to with data and response in here
}.resume()
答案 1 :(得分:0)
您似乎需要使用URLSessionConfiguration
在会话中进行配置: -
let urlConfig = URLSessionConfiguration.default
urlConfig.timeoutIntervalForRequest = 5
urlConfig.timeoutIntervalForResource = 5
let session = Foundation.URLSession(configuration: urlConfig, delegate: nil, delegateQueue: nil)
//Now try your code
let task = session.dataTask(with: request) { data, response, err in
print("Entered the completionHandler")
guard err == nil else {
print("error calling GET")
print(err!)
return
}
}
task.resume()