Ios NSURLSession 3xx重定向和完成处理程序
我使用dataTask+completionHandler方法从web服务器下载数据。到目前为止,我已经实施了以下措施:Ios NSURLSession 3xx重定向和完成处理程序,ios,swift,macos,nsurlsession,foundation,Ios,Swift,Macos,Nsurlsession,Foundation,我使用dataTask+completionHandler方法从web服务器下载数据。到目前为止,我已经实施了以下措施: let task = session.dataTaskWithURL(url, completionHandler: { (pageData,response,error) in ... ... let code = urlHttpResponse.statusCode switch code { case 200: self.fetchedPage
let task = session.dataTaskWithURL(url, completionHandler: {
(pageData,response,error) in
...
...
let code = urlHttpResponse.statusCode
switch code {
case 200:
self.fetchedPages.updateValue(pageData, forKey: pageNumber)
case 404:
self.fetchedPages.updateValue(nil, forKey: pageNumber) //No data exists for that page
default:
self.fetchedPages.updateValue(nil, forKey: pageNumber) //No gurantee data exists for that page
}
NSNotificationCenter.defaultCenter().postNotificationName("pageDataDownloaded", object: self, userInfo: ["numberForDownloadedPage":pageNumber])
我想知道的是,如果statusCode是3xx错误,会发生什么?pageData是否包含重定向位置的数据?换言之,我是否应该补充一点
case _ where code >= 300 && code < 400:
self.fetchedPages.updateValue(pageData, forKey: pageNumber)
案例uu其中code>=300&&code<400:
self.fetchedPages.updateValue(pageData,forKey:pageNumber)
或者,处理程序是否会再次被调用,其中包含重定向位置的值和新的200状态码?或者正确处理重定向是我只能使用代理才能做到的吗?如果您没有代理或者代理没有实现,HTTP重定向将自动跟随。在这种情况下,您将不会在处理程序中看到30x状态