在没有缓存的情况下检查 HTTP 状态代码

Checking HTTP Status code without cache

我需要在加载网站之前检查它是否可以访问。我是 iOS 开发的新手,但这是我为发现响应而实施的方法。

   var url = NSURL(string: "http://www.apple.com")

    var task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
        data, response, error in

        println(data)

        var httpResponse = response as? NSHTTPURLResponse

        println(httpResponse)
    }
    task.resume()

有效!但问题是响应来自缓存......所以结果是: 如果我正在检查一个文件是否存在并且在那一刻我正在检查它是否存在 - >对于应用程序它将始终存在因为它存储在缓存中......所以如果我删除文件然后我发出请求...... .它总是给我回复 200 而不是 404。

事实上,如果我在发出请求之前插入这行代码(它会删除缓存!),那么它就会正常工作,并且它会始终检查网站或文件是否存在!

 NSURLCache.sharedURLCache().removeAllCachedResponses()

所以...我该如何在 Swift 中解决这个问题?...非常感谢

您可以使用新的 url 会话实例设置无缓存策略。

创建一个 属性 并为其设置一个新的 NSURLSession 实例。

var urlSession : NSURLSession!

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.requestCachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData;
self.urlSession = NSURLSession(configuration: configuration)

使用此 URLSession 属性 获取您的数据。

var url = NSURL(string: "http://www.apple.com")

var task =  self.urlSession.dataTaskWithURL(url!) {
      data, response, error in
            // Your code
}
task.resume()