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{
}
一、连接方式分两种:同步和异步
同步连接
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{
}
相关文章推荐
- linux c 检测网络状态
- HttpRequest信息内容介绍
- HTTP协议中POST、GET、HEAD、PUT等请求方法以及一些常见错误(转载)
- 关于《JavaScript DOM 编程艺术》一书中getHTTPObject.js 的一点看法
- IOS 获取网络地址的html字符串 本地获取网络图片
- HttpClient使用HttpGet进行json数据传输
- Linux下常用命令-网络命令
- 网络电视精灵2
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html
- web service中配置tcp/ip监视器
- 网络请求之——————post
- ASP.NET-自定义HttpModule与HttpHandler介绍
- php读取网络文件 curl, fsockopen ,file_get_contents 几个方法的效率对比
- ios网络编程(一)之网络请求
- Qt5.5中QTcpserver的注意细节(默认监听与IPv6格式等)
- HTTP协议状态码
- 网络连接——HttpURLConnection
- 网络技术之——WebView(轻松展示各种网页)
- HTTP - 持久连接