ios之网络数据下载和JSON解析
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
浙公网安备 33010602011771号