一、同步下载(交互不好,容易出现卡死现象,一般下载数据较小或有特定需求才使用)。 发送同步请求后,程序将停止用户交互,直到服务器返回数据完成后,才进行下一步的操作。 步骤: 1.创建NSURL NSURL *url = [[NSURL alloc] initWithString"http://www.baidu.com/"]; 2.通过URL创建NSURLRequest NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; cachePolicy 缓存协议是个枚举类型: NSURLRequestUseProtocolCachePolicy 基础策略 NSURLRequestReloadIgnoringLocalCacheData 忽略本地缓存 NSURLRequestReturnCacheDataElseLoad 首先使用缓存,如果没有本地缓存,才从原地址下载 NSURLRequestReturnCacheDataDontLoad 使用本地缓存,从不下载,如果本地没有缓存,则请求失败。此策略多用于离线操作 NSURLRequestReloadIgnoringLocalAndRemoteCacheData 无视任何的缓存策略,无论是本地还是远程,总是从原地址重新下载 NSURLRequestReloadRevalidatingCacheData 如果本地缓存是有效的则不下载。其他任何情况都从原地址重新下载 3.建立网络连接NSURLConnection,同步请求数据 NSData *receivedData = (NSMutableData *)[NSURLConnection sendSynchronousRwquest:request returningResponse:&response error:&error]; 以上三步后,就需要将receivedData进行解析,一般是XML/JSON。 二、异步下载 步骤: 步骤前两步和同步一样,在第三步接收数据的时候与它有差别,需要用四个网络连接代理方法来实现。 1.创建NSURL NSURL *url = [[NSURL alloc] initWithString"http://www.baidu.com/"]; 2.通过URL创建NSURLRequest NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15]; 3. 建立网络连接NSURLConnection,并设置其代理 [NSURLConnection connetionWithRequest:request delegate:self]; 需要实现的代理: NSURLConnectionDataDelegate,NSURLConnectionDelegate 用到的4个代理方法: |
同步下载和异步下载
最新推荐文章于 2023-12-06 14:04:41 发布