检查没有缓存的HTTP状态代码

时间:2015-01-08 13:40:08

标签: ios objective-c caching swift http-status-code-404

我需要在加载网站之前检查网站是否可以访问。我是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中解决这个问题?...非常感谢

1 个答案:

答案 0 :(得分:1)

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

创建一个属性并为其设置一个新的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()