iOS学习笔记——同步请求下载与异步请求下载
2014-01-01 15:23
477 查看
1.同步请求下载
同步请求与用户的交互不太好,容易出现卡顿的现象,一般不使用。发送请求后等待服务器的响应,返回数据后进行下一步的操作。
创建一个空白视图,在AppDelegate.m文件中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)lanuchOptions方法中添加如下代码:
异步轻骑支持应用程序在后台下载数据,在等待下砸完成的过程中不影响用户的其他操作。异步请求需要实现NSURLConnectionDataDelegate协议,实现其中的方法。同时需要创建一个可变的NSMutableData类型对象,存储下载得到的数据。
在.h文件里,遵循协议,创建存储数据的对象,代码如下:
在.h文件里,实现协议的方法,完成异步请求数据的存储,代码如下:
同步请求与用户的交互不太好,容易出现卡顿的现象,一般不使用。发送请求后等待服务器的响应,返回数据后进行下一步的操作。
创建一个空白视图,在AppDelegate.m文件中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)lanuchOptions方法中添加如下代码:
//-----同步请求下载 //获取网络资源路径(URL) NSURL * pURL = [NSURL URLWithString:@"http://www.baidu.com"]; //创建一个请求 NSURLRequest * pRequest = [NSURLRequest requestWithURL:pURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60]; //建立连接 NSURLResponse * pResponse = nil; NSError * pError = nil; //向服务器发起请求(发出后线程就会一直等待服务器响应,知道超出最大响应事件),获取数据后,转换为NSData类型数据 NSData * pData = [NSURLConnection sendSynchronousRequest:pRequest returningResponse:&pResponse error:&pError]; //输出数据,查看,⭐️后期还可以解析数据 NSLog(@"pData = %@",pData); NSLog(@"pError = %@",[pError localizedDescription]);2.异步请求下载
异步轻骑支持应用程序在后台下载数据,在等待下砸完成的过程中不影响用户的其他操作。异步请求需要实现NSURLConnectionDataDelegate协议,实现其中的方法。同时需要创建一个可变的NSMutableData类型对象,存储下载得到的数据。
在.h文件里,遵循协议,创建存储数据的对象,代码如下:
@interface LinAppDelegate : UIResponder <UIApplicationDelegate,NSURLConnectionDataDelegate> @property (retain, nonatomic) NSMutableData * pData; @property (strong, nonatomic) UIWindow *window; @end一定要记得释放创建的对象。
在.h文件里,实现协议的方法,完成异步请求数据的存储,代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; //-----异步请求 //获取网络资源路径(URL) NSURL * pURL = [NSURL URLWithString:@"hppt://www.baidu.com"]; //根据URL创建请求 NSURLRequest * pRequest = [NSURLRequest requestWithURL:pURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60]; //发起请求,通过委托模式回调完成数据获取 [NSURLConnection connectionWithRequest:pRequest delegate:self]; [self.window makeKeyAndVisible]; return YES; } #pragma mark-----NSURLConnectionDataDelegate //服务器响应回调的方法 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSLog(@"服务器响应!"); //初始化,创建内存空间 self.pData = [NSMutableData dataWithCapacity:5000]; } //服务器返回数据,客户端开始接受(data为返回的数据) - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { NSLog(@"服务器返回数据!"); //将返回数据放入缓存 [self.pData appendData:data]; } //数据接受完毕回调的方法 - (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"数据接收完毕!"); //输出接受到的数据 NSLog(@"pData = %@",self.pData); } //接受数据失败的时候调用的方法 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"数据接受失败,失败的原因:%@",[error localizedDescription]); }
相关文章推荐
- iOS学习笔记---利用NSThread实现异步更新UI和下载图片
- iOS小明开发笔记(二十六) (同步、异步请求, GET、POST请求)
- iOS学习笔记6-关于NSNotificationCenter及同步异步
- IOS 学习笔记 —— ASIHTTPRequest 之 发送异步请求
- iOS陆哥开发笔记(二十七) (同步、异步请求, GET、POST请求)
- iOS学习笔记之异步图片下载
- iOS海哥开发笔记 (海哥原创,iOS 之同步请求、异步请求、GET请求、POST请求 )
- iOS学习笔记74-IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别附代码
- iOS学习笔记-106.多线程05——CGD同步、异步函数和并行、串行、主队列示例
- IOS开发笔记-NSURLConnection同步请求和异步请求以及get方法,post方法
- iOS学习笔记4—iOS开发异步下载
- IOS学习之——同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- iOS学习笔记13— UITableView封装之下拉-上提-图片异步加载
- iOS网络开发中的同步、异步和请求队列
- iOS学习笔记47——图片异步加载之EGOImageLoading
- iOS学习笔记-131.多线程24——多图下载4_第四种实现方式(缓存使用NSCache)
- iOS中GET请求的同步与异步
- IOS学习 info.plist 文件加两行代码 多线程NSThread/GCD 异步下载网络图片
- iOS HTTP请求——同步请求、队列式异步请求、异步请求