2015-06-12 7 views
1

У меня есть интересная проблема: когда мое устройство находится в режиме полета, код состояния HTTP, который предоставляет NSHHTPURLResponse, является 200 «ОК».Код состояния NSHTTPURLResponse 200 в режиме полета

Не должен ли он произойти с ошибкой или, по крайней мере, не отвечать на то, что он имеет действительное соединение с кодом 200?

Вот snipit моего кода:

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(); 

В самолетном режиме "All Good" печатается

+0

'заголовки Cache-Control' apple.com указывают на' Макс-age' из '321'. Таким образом, вы, вероятно, получаете кешированный результат из NSURLCache. –

ответ

0

Не проверять ошибки, проверить возвращенные данные. Ошибка (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() 
+1

К сожалению, похоже, что данные, переданные (даже в режиме полета), не ноль. Есть ли способ очистить кеш? –

+0

Добавлена ​​строка для печати того, что вы получаете. Если вы получаете содержимое страницы HTML, то я подозреваю, что вы используете симулятор. Невозможно смоделировать режим полета в симуляторе. Обходной путь - отключить вашу сеть на Mac. – Laurent

Смежные вопросы