在网络请求过程中,接收数据的过程实际上是通过NSURLConnectionDataDelegate来实现的,常用代理方法包括:
服务器开始返回数据,准备工作
(void)connection:didReceiveResponse:
收到服务器返回的数据,本方法会被调用多次
- (void)connection:didReceiveData:
数据接收完毕,做数据的最后处理
(void)connectionDidFinishLoading:
网络连接错误
- (void)connection:didFailWithError:
代码演示:
二进制流的演示
#import "DemoViewController.h"
@interface DemoViewController () <NSURLConnectionDataDelegate>
@property(nonatomic, strong) NSMutableData *data;
@end
@implementation DemoViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
/**
* 采用代理的方式访问
*/
- (void)getRequest
{
NSString *urlValue = @"";
//1、URL
NSURL *url = [NSURL URLWithString:urlValue];
//2、请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//3、连接
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
//4、异步
dispatch_async(dispatch_queue_create("demo", DISPATCH_QUEUE_CONCURRENT), ^{
[connection start];
});
}
/**
* 服务器开始返回数据,准备工作
*/
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
if (!self.data)
{
self.data = [NSMutableData data];
}
else
{
[self.data setData:nil];
}
}
/**
* 收到服务器返回的数据,本方法会被调用多次
*/
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[self.data appendData:data];
}
/**
* 数据接收完毕,做数据的最后处理
*/
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *requetResult = [[NSString alloc] initWithData:self.data encoding:NSUTF8StringEncoding];
}
/**
* 网络连接错误
*/
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"%@", error);
}
@end
网络请求过程
最新推荐文章于 2024-06-14 20:13:38 发布