NSURLConnection 提供了很多灵活的方法下载URL内容,也提供了一个简单的接口去创建和放弃连接,同时使用很多的delegate方法去支持连接过程的反馈和控制。
使用方法:
1、先创建一个NSURL
2、在通过NSURL创建NSURLRequest,可以指定缓存规则和超时时间
3、创建NSURLConnection实例,指定NSURLRequest和一个delegate对象
如果创建失败,则会返回nil,如果创建成功则创建一个NSMutalbeData的实例用来存储数据
NSURLRequest *request=[[NSURLRequestalloc] initWithURL:[NSURLURLWithString:@"http://www.sohu.com"]cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:3];
NSURLConnection *connection=[NSURLConnectionconnectionWithRequest:request delegate:self];
if (connection) {
receiveData=[NSMutableDatadata];
}else
{
NSLog(@"the connection is wrong");
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"didReceiveResponse");
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"didReceiveData");
}
此外,NSURLConnection提供了sendSynchronousRequest方法做同步请求
NSData *resultData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str=[[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
实现同步请求:
NSURLRequest *request=[[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.baidu.com"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:3];
[NSURLConnection connectionWithRequest:request delegate:self];
添加代理,实现如下代理方法:Handling Incoming Data
– connection:didReceiveResponse:
- – connection:didReceiveData:
Receiving Connection Progress
- – connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
- – connectionDidFinishLoading:
Handling Redirects
- – connection:willSendRequest:redirectResponse:
- – connection:needNewBodyStream:
Overriding Caching Behavior
- – connection:willCacheResponse:
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[receiveData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *str=[[NSString alloc] initWithData:receiveData encoding:NSUTF8StringEncoding];
NSLog(@"str is %@",str);
}