簡體   English   中英

飛行模式下的 NSHTTPURLResponse 狀態代碼 200

[英]NSHTTPURLResponse Status Code 200 in Airplane Mode

我有一個有趣的問題:當我的設備處於飛行模式時, NSHHTPURLResponse提供的 HTTP 狀態代碼是200 “OK”。

它不應該因錯誤而失敗,或者至少不響應它與代碼 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();

在飛行模式下,打印“All Good”

不要測試錯誤,測試返回的數據。 Error (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()

似乎您可能會收到緩存的響應。 看看這篇文章

.reloadIgnoringLocalCacheData

如果這是原因,應該可以解決您的問題。

緩存策略

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM