您的位置:首页 > 理论基础 > 计算机网络

ios网络编程(二)之网络连接

2015-09-12 14:23 447 查看
上篇的连接方式皆为同步连接,这次就详细介绍一下网络连接的方式

一、连接方式分两种:同步和异步

同步连接

1, 使用 [NSURLConnection sendSynchronousRequest:]方法

2,会出现卡顿现象

异步连接分两种:block 和 delegate

1), block 的使用方法是[NSURLConnection sendAsynchronousRequest:requset queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

}];

该方法需要两个参数:request 请求

queue 队列,一般情况是currentQueue

注意:

block里面的代码不会立即执行,只有当服务器请求完数据之后才会执行。

2), delegate的使用方法:

1,带delegate的异步连接将数据下载进度封装在了协议中,故一般情况下会使用此连接方式

2, 带delegate的连接也是异步连接,界面先出来,之后才获取到数据,故问题和block一样

注意:

代理中一个名为didReceiveData:方法, 该data不是已经下载的data,需要自己拼接

二、同步连接步骤

NSURL *url = [NSURL URLWithString:网址字符串];

NSURLRequest *requset = [NSURLRequest requestWithURL:url cachePolicy:( NSURLRequestUseProtocolCachePolicy) timeoutInterval:15];

NSURLResponse *response = nil;

NSError *error = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:requset returningResponse:&response error:&error];

三、异步连接

1,block方法

NSURL *url = [NSURL URLWithString:网址字符串];

NSURLRequest *requset = [NSURLRequest requestWithURL:url cachePolicy:( NSURLRequestUseProtocolCachePolicy) timeoutInterval:15];

[NSURLConnection sendAsynchronousRequest:requset queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

// 在此可以解析数据,展示图片什么的

}];

2, 代理方法

NSURL *url = [NSURL URLWithString:网址字符串];

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

接受协议后代理方法有

接收响应

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{

}

接收到数据

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

}

// 数据获取完毕

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{

}

// 获取失败

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: