没有调用Swift NSMutableURLRequest URLSession回调

时间:2016-07-10 00:33:53

标签: 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的输出("回调"),但没有任何反应。

我的程序是否过早退出并且不允许回调发生?或者还有其他事情发生了吗?

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

1 个答案:

答案 0 :(得分:0)

想出来,程序在回调发生之前退出。在程序结束时添加了一个简单的@media screen and (device-width: 360px) and (device-height: 640px) and (-webkit-min-device-pixel-ratio : 4) and (-webkit-device-pixel-ratio : 4) and (orientation: portrait) { /* CSS GO HERE */ } ,让它有时间完成。在常规的Cocoa GUI应用程序中不需要这样,因为程序不会像这样立即退出。