一. 将字符串转化为NSURL的对象
//把字符串的URL封装成NSURL对象
NSURL * url = [NSURL URLWithString:@"http://www.7160.com//uploads/allimg/140919/9-140919104223.jpg"];
//服务器返回的信息包括图片,视频都是二进制的(NSData)
二.同步下载
//接收二进制
NSData *data = [NSData dataWithContentsOfURL:url];
三.NSURLRequest 和NSMutabbleURLRequest
1.二者为继承关系
NSURLRequest不可变的请求对象 请求的url
NSMutableURLRequest 可变的请求对象
不可变的请求对象一旦创建,url 请求超时的时间都不能更改
2.初始化一个请求对象
//创建一个不可变的请求对象,用一个Url初始化
NSURLRequest *request = [NSURLRequest requestWithURL:url];
四 NSURLConnection
一、NSURLConnection的常用类
(1)NSURL:请求地址
(2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法、请求头、请求体....
(3)NSMutableURLRequest:NSURLRequest的子类
(4)NSURLConnection:负责发送请求,建立客户端和服务器的连接。发送NSURLRequest的数据给服务器,并收集来自服务器的响 应数据
二、NSURLConnection的使用
使用NSURLConnection发送请求的步骤
(1)创建一个NSURL对象,设置请求路径(设置请求路径)
(2)传入NSURL创建一个NSURLRequest对象,设置请求头和请求体(创建请求对象)
(3)使用NSURLConnection发送NSURLRequest(发送请求)
2.代码示例
(1)发送请求的三个步骤:
1.设置请求路径
2.创建请求对象
3.发送请求
三 同步和异步请求
(1)同步请求
//发送同步请求
NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
(2)发送异步请求
-(void)testNSURLConnection{
NSString *urlStr = @"http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=1&category_id=";
_data = [[NSMutableData alloc] init];
_connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]] delegate:self startImmediately:YES];
NSLog(@"initWithRequest 执行完成");
}
(3)异步请求的代理方法
//当请求接收到服务器的响应的时候执行该代理方法
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"已经接收到服务器响应 %@",string1);
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
// 追加数据
[downLoadData appendData:data];
// 计算下载进度(进度=已经下载的数据的大小/总的数据大小)
}
//下载完成执行该方法
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
//最简单:显示所有应用名字
//解析 JSON
//作用:JSON数据转化为NSArray或NSDictionary
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_data options:NSJSONReadingMutableContainers error:nil];
NSArray *appList = [dict valueForKey:@"applications"];
for (NSDictionary *appDict in appList) {
//NSLog(@"name = %@",appDict[@"name"]);
NSLog(@"currentPrice = %@",appDict[@"currentPrice"]);
}
}
//链接失败执行该方法
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
}
五,json 数据解析
//NSJSONSerialization利用该类可以将JSON 数据转换为foundation 的对象字典和数组
NSMutableDictionary * jsonDict = [NSJSONSerialization JSONObjectWithData:downloadData options:NSJSONReadingMutableLeaves error:nil];
//NSJSONReadingMutableContainers: 设置此参加那返回的对象是可以随时添加新的值,也就是 Mutable 类型的对象
//NSJSONReadingMutableLeaves: 返回的叶子NSString是可变类型的;
//NSJSONReadingAllowFragments:设置此参数那返回对象是不能再去动态修改的, 如:NSArray NSDictionary
//遇到{} 用字典接收
//遇到[]用数组接收
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式
==================1========================
JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 名称/值对
JSON 数据的书写格式是:名称/值对。
1 |
"firstName":"John" |
JSON结构有两种结构
1、对象
2、数组
{"people":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
字典 数组 字典
{"programmers":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
],
"authors":[
{"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"},
{"firstName":"Tad","lastName":"Williams","genre":"fantasy"},
{"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"}
],
"musicians":[
{"firstName":"Eric","lastName":"Clapton","instrument":"guitar"},
{"firstName":"Sergei","lastName":"Rachmaninoff","instrument":"piano"}
]}