我正在嘗試將數據發佈到我的Web服務器時遇到一些有關URLSession的問題。然而,這是完美的。什麼似乎不起作用,是我設定的超時時間。這對於我的整個應用程序來說非常重要,因爲我不希望用戶永遠「加載」,沒有任何類型的錯誤信息。這裏是我的代碼:URLSession dataTask超時錯誤
var request = URLRequest(url: URL(string: "https://www.mywebsite.com/file.php")!, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 20)
let urlconfig = URLSessionConfiguration.default
urlconfig.timeoutIntervalForRequest = 20
urlconfig.timeoutIntervalForResource = 20
request.httpMethod = "POST"
let session = URLSession(configuration: urlconfig, delegate: self, delegateQueue: nil)//URLSession.shared
let body = "receiver=\(receiverID)"
request.httpBody = body.data(using: String.Encoding.utf8, allowLossyConversion: true)
request.timeoutInterval = 20
session.dataTask(with: request) {data, response, err in
if err == nil {
do {
let jsonResult:NSDictionary? = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
let jsonComp = jsonResult?.value(forKey: "completion") as! String
if jsonComp == "done" {
} else {
}
}catch{}
} else {
}
}.resume()
我只是想超時設置爲20秒,然後返回一個錯誤(警報)。我怎樣才能做到這一點?我覺得我已經嘗試了一切可能,只需配置URLSessionConfiguration
,然後設置.timeoutInterval
即可。
幫助將不勝感激!
已經很清楚這個問題是關於Swift的標籤。在標題中有什麼「Swift」的意思? –
@LeoNatan因爲你認爲把'Swift'放在標題中是錯誤的,所以我不需要-1我的文章。但要回答你的問題,只是因爲我只想指出語言是Swift。我總是這樣做的東西。 – askaale
我對此表示反對。我會降低這些問題,對不起 - 我不在乎我是否在風車上傾斜。 http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles –