NSURLConnection(iOS2.0-iOS9.0)简单介绍
Posted 小课桌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSURLConnection(iOS2.0-iOS9.0)简单介绍相关的知识,希望对你有一定的参考价值。
NSURLConnection使用的四个步骤:
1、准备URL - NSURL
2、创建请求 - NSRequest
3、发送请求(包括异步和同步)
4、回调
1 // 创建请求的4种方式: 2 // MARK: - 方案一:创建请求对象(默认请求时长60s) 3 // NSURLRequest *request = [NSURLRequest requestWithURL:url]; 4 5 // MARK: - 方案二:创建请求对象同时设置缓存策略和超时时长 6 /* 7 cachePolicy: 8 NSURLRequestUseProtocolCachePolicy = 0, 使用http默认的缓存策略 9 10 NSURLRequestReloadIgnoringLocalCacheData = 1, 只加载最新的网络数据(股票) 11 12 NSURLRequestReturnCacheDataElseLoad = 2, 先加载缓存,后加载网络数据 13 14 NSURLRequestReturnCacheDataDontLoad = 3, 只加载缓存数据(离线应用:离线地图、离线视频) 15 */ 16 // NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15]; 17 18 // MARK: - 方案三:使用NSMutableURLRequest:可以修改请求方法(默认是GET,可以改为POST) 19 NSMutableURLRequest *requestM = [NSMutableURLRequest requestWithURL:url]; 20 // requestM.HTTPMethod = @"POST"; // 修改为POST请求 21 // 额外设置请求头信息,只有可变的(NSMutableURLRequest)才能修改 22 [requestM setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"]; 23 24 // MARK: - 方案四:和方案二相似,在方案三的基础上加缓存策略和超时时长 25 NSMutableURLRequest *requestM2 = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15];
1 // NSURLResponse介绍: 2 // 1、MIMEType:服务器上的文件类型(等价响应头里面的Content-Type) 3 // 2、expectedContentLength:文件在服务器上的总大小(下载进度计算时使用) 4 // 3、suggestedFilename:文件下载下来后,保存时命名的 5 // 子类NSHTTPURLResponse: 6 // statusCode:状态码,200表示成功,304未修改,表示从缓存中读
下面上一个完整的小demo,使用NSURLConnection加载百度,并使用WebView进行展示:
1 #import "ViewController.h" 2 3 /* 4 NSURLConnection使用四步骤: 5 1、准备URL - NSURL 6 2、创建请求 - NSRequest 7 3、发送请求(包括异步和同步) 8 4、回调 9 */ 10 11 @interface ViewController () 12 13 @property (weak, nonatomic) IBOutlet UIWebView *webView; 14 15 @end 16 17 @implementation ViewController 18 19 - (void)viewDidLoad { 20 [super viewDidLoad]; 21 [self loadData]; 22 } 23 24 25 - (void)loadData{ 26 // 准备URL 27 NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"]; 28 29 // MARK: - 方案一:创建请求对象(默认请求时长60s) 30 // NSURLRequest *request = [NSURLRequest requestWithURL:url]; 31 32 // MARK: - 方案二:创建请求对象同时设置缓存策略和超时时长 33 /* 34 cachePolicy: 35 NSURLRequestUseProtocolCachePolicy = 0, 使用http默认的缓存策略 36 37 NSURLRequestReloadIgnoringLocalCacheData = 1, 只加载最新的网络数据(股票) 38 39 NSURLRequestReturnCacheDataElseLoad = 2, 先加载缓存,后加载网络数据 40 41 NSURLRequestReturnCacheDataDontLoad = 3, 只加载缓存数据(离线应用:离线地图、离线视频) 42 */ 43 // NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15]; 44 45 // MARK: - 方案三:使用NSMutableURLRequest:可以修改请求方法(默认是GET,可以改为POST) 46 NSMutableURLRequest *requestM = [NSMutableURLRequest requestWithURL:url]; 47 // requestM.HTTPMethod = @"POST"; // 修改为POST请求 48 // 额外设置请求头信息,只有可变的(NSMutableURLRequest)才能修改 49 [requestM setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"]; 50 51 // MARK: - 方案四:和方案二相似,在方案三的基础上加缓存策略和超时时长 52 NSMutableURLRequest *requestM2 = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15]; 53 54 // 参数1:请求对象 55 // 参数2:回调队列 56 // 参数3:完成回调 57 [NSURLConnection sendAsynchronousRequest:requestM queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { 58 // response:响应头 59 // data:响应体(二进制) 60 // connectionError:错误信息 61 62 // NSURLResponse介绍: 63 // 1、MIMEType:服务器上的文件类型(等价响应头里面的Content-Type) 64 // 2、expectedContentLength:文件在服务器上的总大小(下载进度计算时使用) 65 // 3、suggestedFilename:文件下载下来后,保存时命名的 66 // 子类NSHTTPURLResponse: 67 // statusCode:状态码,200表示成功,304未修改,表示从缓存中读 68 69 // MARK: - 判断错误方式一 70 /* 71 if (connectionError != nil){ 72 NSLog(@"网络请求出错:%@",connectionError); 73 return; 74 } 75 NSHTTPURLResponse *httpURLResponse = (NSHTTPURLResponse *)response; 76 if (httpURLResponse.statusCode == 200 || httpURLResponse.statusCode == 304){ 77 NSLog(@"响应头:%@",response); 78 NSLog(@"响应体:%@",data); 79 NSString *htmlStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 80 81 [self.webView loadHTMLString:htmlStr baseURL:url]; 82 } 83 */ 84 // MARK: - 判断错误方式二 85 if (connectionError == nil && data != nil){ 86 NSLog(@"响应头:%@",response); 87 NSLog(@"响应体:%@",data); 88 NSString *htmlStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 89 90 [self.webView loadHTMLString:htmlStr baseURL:url]; 91 } else{ 92 NSLog(@"网络请求出错:%@",connectionError); 93 } 94 }]; 95 } 96 97 @end
以上是关于NSURLConnection(iOS2.0-iOS9.0)简单介绍的主要内容,如果未能解决你的问题,请参考以下文章