将网址初始化成一个OC字符串对象.
NSString * urlString = @"http://p_w_picpath.zcool.com.cn/56/13/1308200901454.jpg";
NSString * newUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];构建网络URL对象
NSURL * URL = [NSURL URLWithString:newUrlString];
创建网络请求
NSURLRequest * request = [NSURLRequest requestWithURL:URL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
设置代理
[NSURLConnection connectionWithRequest:request delegate:self];
服从协议
@interface ViewController () <NSURLConnectionDataDelegate>
@end实现代理方法:
当收到服务器响应时 触发
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 获文件大小 length = [response expectedContentLength]; NSLog(@"%lld",length); 当收到服务器响应时 , 为data 开辟空间 , 接下来服务器要返回数据 self.data = [NSMutableData data];} 当收到服务器返回数据时触发 , 返回的可能是资源片段(此时该方法重复执行) - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ //拼接数据 [self.data appendData:data]; CGFloat rate = self.data.length * 1.0 / length; NSLog(@"%g",rate);} 当服务器返回所有数据后触发 . 数据返回完毕- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ // self.data;//就是服务器返回的所有的数据 //解析 NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:self.data options:NSJSONReadingMutableContainers error:nil]; // NSLog(@"%@",dic); 此时数据已经全部获取, 假如数据时为tableViewCell 设置cell的内容 , 此时需要刷新 cell[tableView reloadData];
}
服务器连接错误时触发- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ NSLog(@"%d",4);}