IOS9中使用NSURLConection发送异步网络请求

IOS9中使用NSURLConection发送异步网络请求

 

在ios9中,NSURLConection的sendSync..和sendAsync已通过时。被NSURLSession代替。html

 

如下蓝色部分参考: https://lvwenhan.com/ios/454.html?utm_source=tuicoolios

NSURLSession是十分强大的。再次尝试,两次打印之间间隔了五秒,主线程未阻塞,证实 NSURLSession 为异步执行。api

阻塞 

尝试屡次点击,咱们可以看到每五秒执行一次,直到所有执行完毕。服务器

NSURLSession 采用的是 “异步阻塞” 模型,即全部请求在发出后都进入 2# 线程执行,在 2# 线程内部按照阻塞队列模式执行。初步判断,此阻塞特性为 NSURLSession.sharedSession() 单例模式的结果。网络

 

普通网络请求post:session

    NSURL *url=[NSURLURLWithString:@"http://apis.haoservice.com/weather"];异步

 

    NSMutableURLRequest *request=[NSMutableURLRequestrequestWithURL:url];post

    request.HTTPMethod=@"POST";ui

 

    NSString *data=[NSString  stringWithFormat:@"cityname=%@&key=%@",@"烟台",@"f2b98cebe0514424a1edb4b99c1db95c"];url

    request.HTTPBody=[data  dataUsingEncoding:NSUTF8StringEncoding];

 

    NSURLSession *session=[NSURLSession  sharedSession];

    NSURLSessionDataTask *task=[session dataTaskWithRequest:request completionHandler:^(NSData*_Nullable data, NSURLResponse *_Nullable response, NSError *_Nullable error) {

  //在此解析服务器返回的JSON或XML数据

    };

[task resume];   //这句话必定得要,开始任务的意思。

 

下载网络请求:

    NSURLSessionDownloadTask *task=[sessiondownloadTaskWithRequest:requestcompletionHandler:^(NSURL *_Nullable location, NSURLResponse *_Nullable response, NSError *_Nullableerror) {

    }];

[task resume]

上传文件请求:太复杂,也有这个方法,去头文件找。

 注意:若是想得到下载进度或者断点下载,应该不用block方法,应该设置代理,实现协议方法。

上述两个方法也有直接写入URL的方法,具体头文件里面找。

相关文章
相关标签/搜索