Swift NSMutableURLRequest URLSession 回调未被调用

标签 swift

我在让一个非常简单的 Swift HTTP POST 工作时遇到了一些麻烦。

我目前有简单的命令行项目,main.swift 包含

import Foundation

let url = NSURL(string: "http://127.0.0.1/input.php")!
let session = NSURLSession.sharedSession()

let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"

let paramString = "value=100&dataPointId=1"
request.HTTPBody = paramString.dataUsingEncoding(NSUTF8StringEncoding)

session.dataTaskWithRequest(request, completionHandler:  {

    (let data, let response, let error) in

    print("callback")

    guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
        print("error")
        return
}

    let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
    print(dataString)

}).resume()

我验证了我的 PHP 脚本可以使用 Postman 运行,但是当我运行此代码时,我什么也没得到。我正在查看 Apache 访问日志,它甚至没有尝试 HTTP 请求。

就像回调函数没有被调用一样。我希望至少能看到 print("callback") 的输出,但什么也没有发生。

我的程序是否退出得太快并且不允许回调发生?还是发生了其他事情?

这不是在 Playground 中执行,而是使用内置的 URL 处理库。

最佳答案

发现,程序在回调发生之前就退出了。在程序末尾添加了一个简单的 sleep(5) ,使其有时间完成。在常规的 Cocoa GUI 应用程序中不需要这样做,因为程序不会像这样立即退出。

关于Swift NSMutableURLRequest URLSession 回调未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38287529/

相关文章:

ios - "Swift is not supported for static libraries"测试 cocoapod 时

ios - Swift 中的滑出式菜单导航问题

在 UIPanGestureRecognizer 中快速获取按钮标题

ios - 出现和关闭 AVPlayer Controller 的问题

ios - 自动幻灯片切换(SwiftUI)

arrays - 数组转换问题

ios - SwiftUI:如何使隐藏的 UITabBar 在出现的 View 上正确显示?

swift - 不要给我五个挑战—— swift

swift - 如何分享图片和链接?

ios - 应用程序给出 SIGBART 并声称打开特定 View 时数组索引不存在,然后崩溃