ios之网络数据下载和JSON解析
简介
在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据以及如何解析下载下来的JSON的数据格式,以及如何显示数据和图片的异步下载显示
涉及到的知识应用:
1.NSURLConnection异步下载和封装
2.JSON格式和JSON格式解析
3.数据显示和使用SDWebImage异步显示图片
内容
1网络下载基础知识介绍
什么是网络应用?
一般情况下,iPhone上绝大多数的应用都需要网络才能运行,就是网络应用。
网络应用的程序结构
在网络上运行一个程序为应用提供数据, 或者提供服务, 那么这个网络应用一般称为客户端, 而网络上运行的服务称为服务端。
常见的网络接口形式
iOS网络应用常见的数据接口一般都是HTTP形式的URL地址。
界面开发的一般流程
下载数据 NSURLConnection+URL
解析数据 JSON/XML
建立数据模型model
创建视图 使用视图显示
tableView +定制cell
图片异步下载SDWeblmage
2NSURLConnection的使用
NSString同步下载数据
NSError *error = nil; NSURL *url = [NSURL URLWithString:urlString]; NSString *content = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; if (error==nil) { NSLog(@"content = %@",content); } else { NSLog(@"下载失败"); }
NSURLConnection 同步下载
NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSError *error = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; if(error == nil) { NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"str = %@",str); } else { NSLog(@"下载失败"); }
NSURLConnection 异步下载
@property (copy,nonatomic) NSMutableData *data; //作用: // 传入网址, 下载完成执行后执行target对象中action方法 -(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action; @interface ZJHttpRequest ()<NSURLConnectionDataDelegate> { NSURLConnection *_connection; NSString *_url; id _target; SEL _action; } @end @implementation ZJHttpRequest //作用: // 传入网址, 下载完成执行后执行target对象中action方法 -(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action { _url = url; _target = target; _action = action; //发起URL请求 _data = [[NSMutableData alloc] init]; _connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:self startImmediately:YES]; } -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [_data appendData:data]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { //下载完成了, 执行保存的方法 if(_target && [_target respondsToSelector:_action]) { [_target performSelector:_action withObject:self]; } }
3JSON格式说明和格式化工具
JSON格式
{
"count":20,
"data":[
"zhangsan",
"lisi",
"wangwu"
]
}
[] 表示数组,对应NSArray
, 表示并列的数据
{} 表示字典,对应NSDictionary
: 表示键值对
"xxx" 表示字符串,对应NSString
20 对应NSNumber