我有一个用例,需要在Apple TV上轮询一个rest api进行身份验证。我得到了90-120秒的过时响应JSON响应,之后我得到了正确的JSON响应。下面是我的代码
static func getFileNoCache(url:NSURL?, completionHandler:(NSData?, String?)->Void) {
if let fileUrl = url {
let request = NSURLRequest(URL: fileUrl, cachePolicy: .ReloadIgnoringCacheData, timeoutInterval: 5)
let dataTask = NSURLSession.sharedSession().dataTaskWithRequest(request,
completionHandler: { data, response, error in
if let err = error {
// failed !
print("!! Error - Download Failed nt(fileUrl) reason:(err.localizedDescription)")
completionHandler (nil, err.localizedDescription)
return
}
if let statusCode = (response as? NSHTTPURLResponse)?.statusCode {
if statusCode == 200 {
completionHandler(data, nil)
}
else {
completionHandler (nil, "Message")
}
}
else {
completionHandler (nil, "Invalid response")
print("!! Error - Downloading EPG Config")
}
})
dataTask.resume()
}
}
我真的不知道出了什么问题
可以是任意数量的东西,从代理到服务器端缓存,再到共享会话行为中的bug。
尝试使用您自己的会话配置完全禁用缓存,将其URLCache属性设置为nil,然后根据该配置创建会话。
如果这不起作用,那么缓存不在您的机器中,您最好的选择是在URL中添加一个缓存阻塞器(例如&ignoredParameter=monetically_increasing_number)。