iOS 04-NSSession类库之DataTask代理
来源:互联网 发布:吴裕彬 水平 知乎 编辑:程序博客网 时间:2024/06/15 01:32
@interface ViewController ()<NSURLSessionDataDelegate>
//创建数据容器,接收返回数据
@property (nonatomic,strong) NSMutableData *data;
@end
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[selfdataTask];
}
-(void)dataTask {
// 1创建请求地址 读者自行更换URL
NSURL *url = [NSURLURLWithString:@"https://api.seniverse.com/v3/weather/now.json?key=????&location=zunyi&language=zh-Hans&unit=c"];
// 2创建请求类
NSURLRequest *request = [NSURLRequestrequestWithURL:url];
// 3创建会话
/*
默认
NSURLSessionConfiguration *defaultSessionConfiguration;
无痕浏览,不存储任何信息
NSURLSessionConfiguration *ephemeralSessionConfiguration;
后台下载
+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier
delegateQueue:表示协议方法在哪个线程中执行
*/
NSURLSession *session = [NSURLSessionsessionWithConfiguration:[NSURLSessionConfigurationdefaultSessionConfiguration] delegate:selfdelegateQueue:[NSOperationQueuemainQueue]];
// 4根据会话创建任务
NSURLSessionDataTask *dataTask = [sessiondataTaskWithRequest:request];
//5启动任务
[dataTask resume];
}
#pragma mark --协议方法
//接收到服务器响应
-(void)URLSession:(NSURLSession *)session dataTask:(nonnullNSURLSessionDataTask *)dataTask didReceiveResponse:(nonnullNSURLResponse *)response completionHandler:(nonnullvoid (^)(NSURLSessionResponseDisposition))completionHandler
{
NSLog(@"didReceiveResponse");
if (self.data ==nil) {
self.data = [[NSMutableDataalloc] init];
}else {
self.data.length =0;
}
/*
NSURLSessionResponseCancel = 0 默认 请求之后不接收服务器的数据
NSURLSessionResponseAllow = 1 允许接收服务器的数据
NSURLSessionResponseBecomeDownload = 2转成下载任务
NSURLSessionResponseBecomeStream = 3转成流
*/
completionHandler (NSURLSessionResponseAllow);
}
//接收到数据,该方法会被调用多次
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
NSLog(@"didReceiveData");
[self.dataappendData:data];
}
//数据请求完成或者请求出现错误调用的方法
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
NSLog(@"didCompletWithError");
if (error ==nil) {
//解析数据
id objc = [NSJSONSerializationJSONObjectWithData:self.dataoptions:NSJSONReadingMutableContainerserror:nil];
NSLog(@"--%@--",objc);
}
}
- iOS 04-NSSession类库之DataTask代理
- iOS NsSession http请求错误
- IOS网络开发NSURLSession(二)DataTask+Demo
- IOS网络开发NSURLSession(二)DataTask+Demo
- IOS之简单代理
- ios之代理
- iOS网络篇---使用NSSession 实现获取XML
- iOS开发之设计模式之代理类
- iOS开发之代理模式
- iOS之代理delegate使用
- iOS 之 代理五步骤
- IOS 笔记之 网络代理
- iOS之代理设计模式
- iOS传值之代理
- iOS开发之代理协议
- iOS开发模式之代理
- iOS 探讨之 代理模式
- ios 代理类汇总
- ImageLoader加载图片
- vue-cli引用jquer
- 经常看到RS485和MODBUS写在一起,它们的区别和联系?
- ActiveMQ消息的延时和定时投递
- xcode 显示空白字符
- iOS 04-NSSession类库之DataTask代理
- linux中module_param简介
- 微服务架构下dubbo的缺点
- android Activity右滑返回,退出当前activity
- backdoor web Browser (修改http-request为 SDSLabs浏览器)
- Activity与Fragment生命周期对比
- 445封了SQLServer不能用问题解决
- 机器学习中常见概念的区别与联系
- mysql服务器远程授权