Swift Http客户端不发送请求

时间:2017-07-28 19:05:02

标签: swift httprequest

我有这个功能来测试发送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...")
}

2 个答案:

答案 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()