您的代碼在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