在命令行工具上使用 Swift URLSession 示例代码

Use Swift URLSession example code on command line tool

我正在尝试找出最简单 的方法来从命令行在Swift 4 中发出HTTP 请求。我从 URLSession programming guide 复制了这段代码,并添加了几个打印语句。我不明白为什么 .dataTask 没有执行。

print("Testing URLSession")
let sessionWithoutADelegate = URLSession(configuration: URLSessionConfiguration.default)
if let url = URL(string: "https://www.example.com/") {
    print("Encoded url \(url)")
    (sessionWithoutADelegate.dataTask(with: url) { (data, response, error) in
        print("Executing dataTask")
        if let error = error {
            print("Error: \(error)")
        } else if let response = response,
            let data = data,
            let string = String(data: data, encoding: .utf8) {
            print("Response: \(response)")
            print("DATA:\n\(string)\nEND DATA\n")
        }
    }).resume()
}

objective 是从 REST api 检索数据,但我什至不能发出一个简单的 GET 请求来正常工作...

我终于想出了如何使用 CFRunLoop:

let runLoop = CFRunLoopGetCurrent()
let task = session.dataTask(with: request) { (data, response, error) in
    print("Retrieved data")
    CFRunLoopStop(runLoop)
}
task.resume()
CFRunLoopRun()
print("done")