我在使用非常简单的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处理库。
答案 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应用程序中不需要这样,因为程序不会像这样立即退出。