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

标签 swift nsurlsession foundation

我正在尝试找出从命令行在 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()
}

目标是从 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")

关于swift - 在命令行工具上使用 Swift URLSession 示例代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46329494/

相关文章:

swift - 如何修复 YouTube API 查询的 401 错误?

swift - 将完成处理程序与 DispatchQueue 一起使用

swift - 使用 Ji、NSUrlSessions 验证网站?

ios - 制作非可变对象的可变副本的首选方法?

objective-c - 保留计数总是-1?

arrays - while 循环后继续查看 Controller

ios - `String(describing: MyNSObject.self)` 总是返回 "MyNSObject"吗?

ios - 如何在不使用函数的情况下修改实例值?

当互联网可用时,iOS 开始从后台向服务器发送数据

objective-c - 在 NSMutableArray 的特定索引处添加对象