NSURLSession

基础知识
//NSURLSession做网络请求
//相关的类
//1.NSURL: 请求地址
//2.NSURLRequest:请求对象(和NSURLConnection使用的请求对象一样的)
//3.NSURLSession:发送请求,并且获取从服务器返回的数据
//4.NSURLSessionConfiguration:会话模式
//a.defaultSessionConfiguration 默认会话模式(相当于NSURLConnection),会缓存请求相关的数据
//b.ephemeralSessionConfiguration 瞬时会话模式(不会做缓存)
//c.backgroundSessionConfigurationWithIdentifier 后台模式
//5.NSURLSessionTask:
//a.b.NSURLSessionDataTask数据任务(一般的数据请求,比如:获取json数据)
//b.NSURLSessionDownLloadTask 下载任务 (下载文件,比如:下载图片\下载音频视频\下载zip\下载安装包…)
//c.NSURLSessionUploadTask 上传任务(比如:上传图片\上传音频视频\上传zip\上传安装包…)
#pragma mark - 通过协议方法获取服务器返回的数据
-(void)test2{
//1.创建请求路径
NSURL* url = [NSURL URLWithString:@”http://www.1000phone.net:8088/app/iAppFree/api/limited.php?page=1&number=4“];
//2.创建请求
NSURLRequest* request = [NSURLRequest requestWithURL:url];
//3.创建会话模式
NSURLSessionConfiguration* congire = [NSURLSessionConfiguration defaultSessionConfiguration];
//4.创建seession
//参数1:会话模式
//参数2:代理
//参数3:协议方法添加的队列
NSURLSession* session = [NSURLSession sessionWithConfiguration:congire delegate:self delegateQueue:[NSOperationQueue mainQueue]];
//5.创建任务
NSURLSessionTask* task = [session dataTaskWithRequest:request];
//6.启动任务
[task resume];
}
mark - DataDelegate
//接收到服务器的响应后会调用的方法
//参数1:委托
//参数2:session中任务
//参数3:响应信息
//参数4:通过这个bolck告诉服务器客户端需不需要接收数据
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler{
NSLog(@”%@”,response);
if (_data == nil ) {
_data = [[NSMutableData alloc] init];
}else{
_data.length = 0;
}

//如果不调用这个bolck或者传入NSURLSessionResponseCance就会取消数据的传输
//如果传入NSURLSessionResponseAllow,允许数据的传输
completionHandler(NSURLSessionResponseAllow);

}
//接收到服务器返回的数据的时候,会调用这个方法
- (void)URLSession:(NSURLSession )session dataTask:(NSURLSessionDataTask )dataTask
didReceiveData:(NSData *)data{
[_data appendData:data];
NSLog(@”接收到数据”);
}
- (void)URLSession:(NSURLSession )session task:(NSURLSessionTask )task
didCompleteWithError:(nullable NSError *)error{
NSDictionary* dic = [NSJSONSerialization JSONObjectWithData:_data options:NSJSONReadingMutableContainers error:nil];
NSLog(@”%@”,dic);
//如若error不为空,说明请求失败:否则数据接收完成
if (error) {
NSLog(@”%@请求失败:”,error);
}else{
NSLog(@”数据接收完成”);
}
}
#pragma mark - 通过block方法获取服务器返回的数据
-(void)test1{
//1.创建请求路径
NSURL* url = [NSURL URLWithString:@”http://www.1000phone.net:8088/app/iAppFree/api/limited.php?page=1&number=4“];
//2.根据url创建请求对象
NSURLRequest* request = [NSURLRequest requestWithURL:url];
//3.创建会话模式
//默认会话模式
NSURLSessionConfiguration* config = [NSURLSessionConfiguration defaultSessionConfiguration];
//4.创建session
NSURLSession* session = [NSURLSession sessionWithConfiguration:config];
//5.创建数据任务
//参数1:需要发送的请求
//参数2:请求结束后会调用的bolck
NSURLSessionTask* task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//参数1:服务器返回的数据(实体内容)
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@”%@”,dict);
//参数2:相应信息(状态行和相应头)
NSLog(@”%@”,response);

}];;
//6.启动任务
[task resume];

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值