NSURLConnect的使用
2016-03-17 21:30
351 查看
在ios7 以前使用 NSURLConnect发起网络请求,在ios7之后使用NSURLSession发起网络请求。
发起网络请求分三个部分:
一、设置NSURL
二、设置NSURLRequest
三、发起网络请求 NSURLConnect NSURLMutableConnect
相应返回的方式有两种 block、delegate
下面的.m文件使用delegate监控网络交互
发起网络请求分三个部分:
一、设置NSURL
二、设置NSURLRequest
三、发起网络请求 NSURLConnect NSURLMutableConnect
相应返回的方式有两种 block、delegate
下面的.m文件使用delegate监控网络交互
// // ViewController.m // URLConnectDemo // #import "ViewController.h" @interface ViewController ()<NSURLConnectionDelegate,NSURLConnectionDataDelegate> { NSMutableData *receiveData; NSURLConnection *theConnection; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 1、先创建一个NSURL // 2、再通过NSURL创建NSURLRequest,可以指定缓存规则和超时时间 // 3、创建NSURLConnection实例,指定NSURLRequest和一个delegate对象 // 如果创建失败,则会返回nil,如果创建成功则创建一个NSMutalbeData的实例用来存储数据 NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; //当收到initWithRequest: delegate: 消息时,下载会立即开始,在代理(delegate) theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; if(theConnection){ //创建NSMutableData receiveData = [NSMutableData data]; }else{ //创建失败 } } //【要注意】,一个简单的连接也可能会收到多个connection:didReceiveResponse:消息当服务器连接重置或者一些罕见的原因(比如多组mime文档),代理都会收到该消息这时候应该重置进度指示,丢弃之前接收的数据 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ [receiveData setLength:0]; } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ [receiveData appendData:data]; } //当代理接收到连接的connection:didFailWithError消息后,对于该连接不会在收到任何消息 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ theConnection = nil; NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription],[[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]); } //数据下载完毕,最后,如果连接请求成功的下载,代理会接收connectionDidFinishLoading:消息代理不会收到其他的消息了,在消息的实现中,应该释放掉连接 - (void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSString *s = [[NSString alloc] initWithData:receiveData encoding:NSUTF8StringEncoding]; NSLog(@"succeeded %@",s); theConnection = nil; [receiveData setLength:0]; } @end
相关文章推荐
- c++复习要点总结之三 ——构造函数
- cssAndHtml
- 收集的java面试题
- SAS集成Hadoop途径几何?
- 提防向量迭代器变成野指针
- Linux 入侵检测技巧知识
- 区间k大数查询
- 键盘控件KeyboardView的使用
- QtQuick TableView 操作
- Hibernate 自定义主键生成类
- Oracle SQL语句执行顺序
- 字段定义引起的bug
- 让 innerHTML 进来的 script 代码跑起来
- 复利计算器2
- js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
- wicket基本控件使用笔记
- 查看Tomcat版本
- hdu 3400-三分套三分
- UESTC 483 Data Structure Problem
- 《GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形》的正确版本及源代码