IOS9中使用NSURLConection发送异步网络请求
2016-01-31 17:23
411 查看
IOS9中使用NSURLConection发送异步网络请求
在ios9中,NSURLConection的sendSync..和sendAsync已经过时。被NSURLSession代替。以下蓝色部分参考: https://lvwenhan.com/ios/454.html?utm_source=tuicool
NSURLSession是十分强大的。再次尝试,两次打印之间间隔了五秒,主线程未阻塞,证明 NSURLSession 为异步执行。
阻塞
尝试多次点击,我们能够看到每五秒执行一次,直到全部执行完毕。NSURLSession 采用的是 “异步阻塞” 模型,即所有请求在发出后都进入 2# 线程执行,在 2# 线程内部按照阻塞队列模式执行。初步判断,此阻塞特性为 NSURLSession.sharedSession() 单例模式的结果。
普通网络请求post:
NSURL *url=[NSURLURLWithString:@"http://apis.haoservice.com/weather"];
NSMutableURLRequest *request=[NSMutableURLRequestrequestWithURL:url];
request.HTTPMethod=@"POST";
NSString *data=[NSString stringWithFormat:@"cityname=%@&key=%@",@"烟台",@"f2b98cebe0514424a1edb4b99c1db95c"];
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的方法,具体头文件里面找。
相关文章推荐
- IOS-网络(数据安全:MD5加密)
- C#中http请求下载的常用方式demo
- HLG 2163 方格取数 (最大网络流)
- Matlab与神经网络入门
- Linux下套接字详解(五)----基于fork多进程的TCP套接字(阻塞/同步/并发)
- 网络——发送email(一个简单荔枝)
- TCP/UDP协议中用到的各种header, SystemVerilog版
- Android网络请求库android-async-http使用
- fidder 拦截http 重新发起请求
- Java 基于 TCP/IP 实现 Socket中的多客户端通信
- VMware中三种网络模式设置指南
- TCP报头里的那个窗口大小到底是指什么
- http模拟请求工具
- Java 基于TCP/IP 实现简单的 socket 通信
- deep learning tutorial 翻译(theano学习指南4(翻译)- 卷积神经网络 )
- OkHttp网络连接封装工具类
- Mac OS X配置tomcat支持HTTPS
- 网络——提交表单数据(post方式)
- Http通信与Socket通信比较:谁更猴塞雷?
- 请求网络图片缓存到本地 ,还有一些现成的图片加载框架的使用 Ace网络篇(一)