IOS9中使用NSURLConection发送异步网络请求
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的方法,具体头文件里面找。
IOS9中使用NSURLConection发送异步网络请求的更多相关文章
- Android中的异步网络请求
本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关姿势.由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家:) 1. 同步网络 ...
- iOS 多个异步网络请求全部返回后再执行具体逻辑的方法
对于dispatch多个异步操作后的同步方法,以前只看过dispatch_group_async,看看这个方法的说明: * @discussion * Submits a block to a dis ...
- AJAX其实就是一个异步网络请求
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).其实就是一个异步网络请求. 一.创建对象 var xmlhttp; if (w ...
- 从零学习Fluter(五):Flutter中手势滑动拖动已经网络请求
从六号开始搞Flutter,到今天写这篇blog已经过了4天时间,文档初步浏览了一遍,写下了这个demo.demo源码分享在github上,现在对flutter有种说不出的喜欢了.大家一起搞吧! 废话 ...
- iOS开发——post异步网络请求封装
IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...
- php 中使用cURL发送get/post请求,上传图片,批处理
cURL是利用url语法规定传输文件和数据的工具.php中有curl拓展,一般用来实现网络抓取,模拟发送get post请求,文件上传. 在php中建立curl的基本步骤如下: 1 初始化 ...
- iOS开发--用户点击频繁,多个异步网络请求取消问题?
一.业务环境描述 当一个view同时添加两个tableView为subView的时候,两个tableView分别为mainTable和subTable. 当用户点击mainTable上的某一条数据时, ...
- charles重复发送一个网络请求&同时发送N次
重发网络请求的目的:后端调试的过程中,一直在客户端进行点点点比较麻烦,此时直接发送请求比较方便查看调试后的结果(方便后端调试) 1.重复发送一个请求(有两种方法) (1)选定该请求,右键选择repea ...
- Android Asynchronous Http Client-Android异步网络请求客户端接口
1.简介 Android中网络请求一般使用Apache HTTP Client或者采用HttpURLConnect,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用and ...
随机推荐
- python decode和encode
摘抄: 字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符解码(decode)成unicode,再从unicode编码 ...
- JAVA版-微信高清语音.speex转.wav格式
功能介绍: PC端将.speex文件解码为*.wav文件 使用场景: 在MAC/Linux下Java JNI 调用C Speex,后端Java处理微信服务器下载下来的微信高清语音.speex解码为.w ...
- 重构指南 - 封装条件(Encapsulate Conditional)
封装就是将相关的方法或者属性抽象成为一个对象. 封装的意义: 对外隐藏内部实现,接口不变,内部实现自由修改. 只返回需要的数据和方法. 提供一种方式防止数据被修改. 更好的代码复用. 当代码中包含 ...
- mysql case when & concat & SUBSTRING_INDEX & not & having 使用的小case
1. 代码 SELECT a.id, a.activity_name, ( CASE WHEN a.activity_end_time > now() THEN '参与中' ELSE ( CAS ...
- 洛谷P3960 列队(动态开节点线段树)
题意 题目链接 Sol 看不懂splay..,看不懂树状数组... 只会暴力动态开节点线段树 观察之后不难发现,我们对于行和列需要支持的操作都是相同的:找到第\(k\)大的元素并删除,在末尾插入一个元 ...
- 洛谷P2196 挖地雷(dp)
题意 题目链接 Sol 早年NOIP的题锅好多啊.. 这题连有向边还是无向边都没说(害的我wa了一遍) 直接\(f[i]\)表示到第\(i\)个点的贡献 转移的时候枚举从哪个点转移而来 然后我就用一个 ...
- 盒模型的属性丶display显示丶浮动
一丶盒模型的属性(重要) 1.padding padding是标准文档流,父子之间调整位置 <!DOCTYPE html> <html> <head> <me ...
- AngularJS $watch 监听
监听$watch 监听数据变化,有三个参数 $scope.$watch(“监听的属性”,function(new,old){},true); 写true的时候可以监听一个对象里的多个数据变化,不写tr ...
- js String字符串对象常见方法总结
String对象常用来保存文本形式的数据. 其转化方法有二种: String(s) new String(s) String对象方法有: charAt() charCodeAt() concat() ...
- Spark企业级应用开发和调优
1.Spark企业级应用开发和调优 Spark项目编程优化历程记录,主要介绍了Spark企业级别的开发过程中面临的问题和调优方法.包含合理分配分片,避免计算中间结果(大数据量)的collect,合理使 ...