在处理基于Web的网络请求时,我们主要与三个类进行交互:NSURL、NSURLRequest和NSURLSession。
1.NSURL是模型对象。指向资源在网络上的位置
1)网址
let myURL = NSURL(string:"http://oreilly.com")
2)相对网址
let relativeURL = NSURL(string:"resources/index.html",relativeToURL:NSURL(string:"http://oreilly.com"))
3)文件地址
let myFileURL = NSURL(fileURLWithPath:"/Applications")
2.NSURLRequest描述如何访问URL。
它会添加一些信息。比如,这个请求在多长时间内等不到回应才会超时;是否使用缓存;如果这个请求是一个HTTP请求,应当使用哪种请求方法(GET、POST、PUT等),以及HTTP请求的主体应是什么样的。
在大多数情况下,当给定一个NSURL时,可以使用NSURLRequest(URL:)方法创建一个NSURLRequest:let urlRequest = NSURLRequest(URL:myURL!)
或者 NSURLRequest(URL:cachePolicy:timeout-Interval:)
缓存:Http缓存取决于服务器是否要求它缓存,而FTP从来不进行缓存。
NSMutableURLRequest :它是NSURLRequest类的可修改版本,可以在创建请求之后进行配置。
如:let mutableRequest = NSMutableURLRequest(URL:myURL!)
mutableRequest.HTTPMethod = "POST"
3.NSURLSession管理连接的生命周期。
它代替较早的NSURLConnection API,它有新方法来处理所有与URL相关的任务,包括上传和下载。
由四个对象组成:NSURLSession、NSURLSessionDelegate、NSURLSessionConfiguration和NSURLSessionTask。
NSURLSessionConfiguration对象表示会话使用的配置。NSURLSessionConfiguration处理缓存、cookie策略、代理和超时等。所创建的每个配置对象都是可变的,可以由多个会话共享。
NSURLSessionTask表示由会话处理的一项任务。所执行任务的状态。它还可以用来取消、挂起、恢复任务。
NSURLSession及其委托NSURLSessionDelegate负责执行发送给它的所有任务。
一般:在使用NSURLSession时,不需要应对其委托;只要在会话完成一项任务时使用完成代码块即可。
但是,如果在应用程序中使用NSURLSession在iOS 上进行后台下载,那就必须处理会话委托方法并在应用程序委托中实现 application(_,handleEventsForBackgroundURLSession:,completionHandler:)。