您的代码在Xcode 7.1的游乐场中运行,不会产生任何错误。为了让异步代码在操场上执行,我添加了2行。亲自尝试一下。所以我想问题在于你的服务器。
import Foundation
import XCPlayground
// Let asynchronous code run
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
print("Response: \(response)")
print("Response String: \(responseString)")
}
task.resume()
如果你不能弄清楚什么是错的,共享的错误信息会帮助别人找出发生了什么事。
更新: 我想你的代码中的iOS项目中的代码崩溃,因为你不检查,如果该数据是零,就在这条线展开它:
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
但是,为什么数据原来是是无?这是因为iOS 9中的应用传输安全性不允许您默认使用HTTP。您的服务器必须是TLS v1.2或更高版本的HTTPS。要允许HTTP请求,请参阅:Configuring App Transport Security Exceptions in iOS 9 and OSX 10.11
另外,您应该在使用数据以避免崩溃之前检查错误。
let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// Check error before using the data
if error != nil {
print("Error: \(error)")
return
}
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Response: \(response)")
print("Response String: \(responseString)")
}
task.resume()
谢谢你的帮助。这段代码在Playground中运行良好,但是当我尝试使用它(减去Playground导入和无限执行行)时,应用程序崩溃。我目前有这个代码在UI Button按钮上执行,然后将标签更改为'responseString'。我没有收到任何我可以理解的错误信息,该应用程序崩溃。感谢您的帮助 –
我已经更新了我的答案。看看是否能解决你的问题 – cezheng