您的位置:首页 > 理论基础 > 计算机网络

NSUrlSession 网络会话介绍

2015-12-01 16:46 525 查看
NSUrlSession 网络会话的使用分三步:

1> 创建网络会话 【单例】

2> 实例化网络任务【默认挂起状态,并且在在子线程回调】

3> 开启网络任务【手动】

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSString *urlString = @"http://localhost/服务器资料/demo.json";

// 如果url中有汉字,需要做百分号转译,在iOS9以后使用新的方法 stringByAddingPercentEncodingWithAllowedCharacters:
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 1. 实例化一个网络会话(单例)
NSURLSession *session = [NSURLSession sharedSession];

// 2. 根据网络会话,实例化网络任务!
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// Block 回调,网络请求成功之后的回调! (默认是在子线程)

//注意: 1.data:二进制数据! 转换过来之后是否是json格式的数据,可通过转为字符串来查看.
// 2.在网络请求中,必须做失败处理!
if (data) { // 判断服务器是否响应回来数据.如果有响应数据,说明肯定访问成功!

// 这句代码是调试的时候最常用的一句代码!
// NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// NSLog(@"jsonString:%@",jsonString);

// 参数: Data 二进制数据(必须是JSON格式的二进制数据,如果不是,解析出来是 nil )!
// 在 OC 中 ,看到两个 ** 传 NULL(空地址) .一个 * 传 nil(空对象)!
// 返回值,就是解析之后的 OC 数据!

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
NSLog(@"dict:%@",dict);

// 接下来,就是字典转模型...
}
}];

// 3. 开启这个网络任务! 默认是挂起状态,需要手动开启.
[task resume];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息