飞机模式下的NSHTTPURLResponse状态代码200

时间:2015-06-12 22:41:28

标签: ios swift nsurlsession nserror nshttpurlresponse

我遇到了一个有趣的问题:当我的设备处于飞行模式时,NSHHTPURLResponse提供的HTTP状态代码为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();

在飞机模式中,"一切都很好"打印

2 个答案:

答案 0 :(得分: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)

似乎您可能会收到缓存的响应。签出this article

.reloadIgnoringLocalCacheData

如果这是原因,应该解决您的问题。

cachepolicy