iOS9.0之后NSURLConnection被注销,采用NSURLSession,先介绍NSURLSession,然后介绍NSURLConnection

1.NSURLSession:

post请求:

    //1.NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];request.HTTPMethod=@"POST";request.HTTPBody = [@"" dataUsingEncoding:NSUTF8StringEncoding];//2.NSURLSession *session=[NSURLSession sharedSession];NSURLSessionDataTask *dataTask=  [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {NSLog(@"NSURLSession加载数据。。。。post。。。。。%@",data);}];//3.[dataTask resume];

创建请求并设置代理delegate:(NSURLSessionDataDelegate)

    //1.确定请求路径NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];//2.创建请求对象//请求对象内部默认已经包含了请求头和请求方法(GET)NSURLRequest *request = [NSURLRequest requestWithURL:url];//3.获得会话对象,并设置代理/*第一个参数:会话对象的配置信息defaultSessionConfiguration 表示默认配置第二个参数:谁成为代理,此处为控制器本身即self第三个参数:队列,该队列决定代理方法在哪个线程中调用,可以传主队列|非主队列[NSOperationQueue mainQueue]   主队列:   代理方法在主线程中调用[[NSOperationQueue alloc]init] 非主队列: 代理方法在子线程中调用           */NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];//4.根据会话对象创建一个Task(发送请求)NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request];//5.执行任务[dataTask resume];

delegate协议方法:

 //1.接收到服务器响应的时候调用该方法
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler{//在该方法中可以得到响应头信息,即responseNSLog(@"didReceiveResponse--%@",[NSThread currentThread]);completionHandler(NSURLSessionResponseAllow);//注意:需要使用completionHandler回调告诉系统应该如何处理服务器返回的数据//默认是取消的/*NSURLSessionResponseCancel = 0,        默认的处理方式,取消NSURLSessionResponseAllow = 1,         接收服务器返回的数据NSURLSessionResponseBecomeDownload = 2,变成一个下载请求NSURLSessionResponseBecomeStream        变成一个流*/
}//2.接收到服务器返回数据的时候会调用该方法,如果数据较大那么该方法可能会调用多次
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{NSLog(@"didReceiveData--%@",[NSThread currentThread]);//拼接服务器返回的数据

}
//3.当请求完成(成功|失败)的时候会调用该方法,如果请求失败,则error有值-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {NSLog(@"didCompleteWithError--%@",[NSThread currentThread]);if(error == nil){//解析数据,JSON解析请参考
                 }}

2.NSURLConnection

普通请求:

 /*    //1.网址NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"];//2.请求NSURLRequest *request=[NSURLRequest requestWithURL:url];//3.队列NSOperationQueue *queue=[[NSOperationQueue alloc]init];//4.发送异步请求[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse * response, NSData *  data, NSError *  connectionError) {NSString *content=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"加载成功:%@",content);}];*///同步发送,要放到另一个线程里,防止阻塞;dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];NSURLResponse *response;NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];//&指的是指针;NSString *content=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"NSURLConnection加载数据。。。。。。。:%@",content);});

代理请求:(NSURLConnectionDataDelegate)

 NSURLRequest *request=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];// NSURLResponse *response;
   [NSURLConnection connectionWithRequest:request delegate:self];

代理协议方法:

//
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{NSLog(@"接到response");
}//
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{NSLog(@"接收数据");}//
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{NSLog(@"接收数据完成");}

参考网址:http://www.cnblogs.com/wendingding/p/5168772.html

转载于:https://www.cnblogs.com/sunjianfei/p/5570578.html

NSURLSession和NSURLConnection相关推荐

  1. NSURLSession使用说明及后台工作流程分析

    NSURLSession简介 NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的.在程序在前台时,NSURLSession与NSURLConnect ...

  2. NSURLSession

    2019独角兽企业重金招聘Python工程师标准>>> //1.创建一个网络处理的会话,取得一个全局的会话//好处(相对于NSURLSession)1,多个网络任务可以通过sessi ...

  3. Swift - 使用NSURLSession同步获取数据(通过添加信号量)

    过去通过 NSURLConnection.sendSynchronousRequest() 方法能同步请求数据.从iOS9起,苹果建议废除 NSURLConnection,使用 NSURLSessio ...

  4. 【iOS】使用NSURLSession网络请求

    文章目录 前言 NSURLSession NSURLSession替换NSURLConnection Get请求 流程 1. 确定请求路径 2. 创建请求对象 3. 获得会话对象 4. 根据会话对象创 ...

  5. iOS基础问答面试题连载-附答案

    2017-02-02 timhbw CocoaChina 以下是一些自己收集的比较基础的问题(大神可以忽略),附上答案,方便大家阅读.俗话说得好,基础不牢,地动山摇.文章末尾会提供PDF版的文档,方便 ...

  6. 快过年了,为过完年跳槽的人准备一份面试题

    设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情. 1). MVC模式:Model View Control,把模型 视图 控制器 ...

  7. iOS 开发中使用 NSURLProtocol 拦截 HTTP 请求

    这篇文章会提供一种在 Cocoa 层拦截所有 HTTP 请求的方法,其实标题已经说明了拦截 HTTP 请求需要的了解的就是 NSURLProtocol. 由于文章的内容较长,会分成两部分,这篇文章介绍 ...

  8. URLCache探索

    了解NSURLCahe NSURLCache类用NSURLRequest对象和NSCachedURLResponse对象的一对一映射关系实现了请求数据的缓存.它同时提供内存缓存和硬盘缓存,你可以分别自 ...

  9. iOS应用如何支持IPV6

    本文转自 http://www.code4app.com/forum.php?mod=viewthread&tid=8427&highlight=ipv6 果然是苹果打个哈欠,iOS行 ...

最新文章

  1. API网关是否真的起到了它该有的作用?
  2. 一道泄露并遭禁用的谷歌面试题,背后玄机全解析
  3. 在线学习与离线学习如何区分
  4. 【windows phone】CollectionViewSource的妙用
  5. 【Python】Python中的类型转换
  6. MySQL:too many connections
  7. 浙江哪个地方的杨梅最出名?
  8. Spark源码分析之二:Job的调度模型与运行反馈
  9. python代码大全-python贪吃蛇游戏代码
  10. 小米8android版本打开,怎么查看小米手机安卓系统版本
  11. 让HTML标签title属性值换行
  12. 拓端tecdat|Python用稀疏、高斯随机投影和主成分分析PCA对MNIST手写数字数据进行降维可视化
  13. 汇编 十六进制转二进制
  14. 2017年第八届CSTQB®国际软件测试高峰论坛议题征集启动
  15. LaTex 常用的数学字体
  16. 需要在计算机安装msxml版本,Office2010安装需要MSXML版本6.10.1129.0的方法
  17. 【数据库 Mysql查询系列】--检索出stu表中‘计算机工程’或‘软件工程’专业的学生的记录,结果集按学号升序排序。
  18. 冷月手撕408之计算机组成原理(1)-导学
  19. unity跑酷怎么添加金币_【Unity3D实战】零基础一步一步教你制作跑酷类游戏(填坑完整版)...
  20. IBM DB2数据库实战培训课程(2天速成版)视频教程

热门文章

  1. tomcat的JK和JK2
  2. jquery 3D分页翻转滑块
  3. 最大公共子串提取“模式”
  4. delphi编程模拟发送QQ2008消息!
  5. Storm的StreamID使用样例(版本1.0.2)
  6. 自定义分页(模块化)
  7. 美萍超市销售管理系统标准版access数据库密码mp611
  8. 8.继续分析一破解加密码获取-最最最简单的注册机
  9. 操作系统原理第四章:线程
  10. 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )