联网

在处理基于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:)。





你可能感兴趣的:(ios,网络)