NSHTTPURLResponse код состояния 200 в режиме полета
У меня есть интересная проблема: когда мое устройство находится в режиме полета, код состояния HTTP, который NSHHTPURLResponse
обеспечивает это 200
"ХОРОШО".
Не должно ли это произойти с ошибкой или, по крайней мере, не ответить, что у него есть действительное соединение с кодом 200?
Вот фрагмент моего кода:
let url = NSURL(string: "http://apple.com");
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
if(error == nil){
let statusCode = (response as! NSHTTPURLResponse).statusCode;
if(statusCode == 200){
println("All Good");
}
}
}
task.resume();
В режиме "В самолете" печатается "Все хорошо"
1 ответ
Кажется, вы получаете кешированный ответ. Прочтите эту статью.
.reloadIgnoringLocalCacheData
должен решить вашу проблему, если это причина.
Не проверяйте ошибку, проверьте возвращенные данные. Ошибка (NSError, ErrorType) используется для возврата ошибок из обратного вызова (inout).
Код ниже работает для меня.
Я отредактировал его с идиоматическим синтаксисом Swift:
let urlPath = "https://www.google.com/"
let url = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url!) { data, response, error in
if data != nil {
NSLog("%@", NSString(data: data!, encoding: NSUTF8StringEncoding)!) // EDIT
let res = response as? NSHTTPURLResponse
if res?.statusCode == 200 {
NSLog("All Good")
}
}
}
task!.resume()