NSURLSession:

作用:
和NSURLConnection一样
1、负责发送请求,建立客户端和服务器的连接发送数据给服务器
2、并收集来自服务器的响应数据
步骤:
1、创建NSURLSession对象
2、利用NSURLSession创建任务(task)
3、执行任务
任务的类型:
1、NSURLSessionDataTask //普通的请求数据
2、NSURLSessionDownloadTask //下载数据
3、NSURLSessionUploadTask //上传数据
  • NSURLSessionDataTask(普通的请求数据)

    • GET 请求

         - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
      //1、创建NSURLSession对象
      NSURLSession *session = [NSURLSession sharedSession];
      //2、利用NSURLSession创建任务(task)
      NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/login?username=LitterL&pwd=123"];
      NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
      NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
      }];
      //3、执行任务
      [task resume];
      }
    • POST 请求

         - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
      //1、创建NSURLSession对象
      NSURLSession *session = [NSURLSession sharedSession];
      //2、利用NSURLSession创建任务(task)
      NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/login"];
      //创建请求对象里面包含请求体
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
      request.HTTPMethod = @"POST";
      request.HTTPBody = [@"username=LitterL&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];
      NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
      NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
      }];
      //3、执行任务
      [task resume];
      }
    • 补充

      这里的话,结果我就不截图显示了,结果都是为一样的JSON数据

  • NSURLSessionDownloadTask:(下载图片)

    • 代码

      -(void)download{
      //创建URL
      NSURL *url = [NSURL URLWithString:@"http://upload.jianshu.io/users/upload_avatars/1232706/aa229f6d7f4d.png?imageMogr/thumbnail/90x90/quality/100"];
      // 1、创建NSURLSession对象
      NSURLSession *seesion = [NSURLSession sharedSession];
      /* 2、利用NSURLSession创建任务(task)
      第一个参数:需要下载的文件路径
      第二个参数:
      location:下载好的临时文件路径
      response:响应头
      error:请求是否错误
      */
      NSURLSessionDownloadTask *task = [seesion downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
      //1、生成的Cace地址
      NSString *cacepath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:response.suggestedFilename];
      //2、移动图片的存储地址
      NSFileManager *manager = [NSFileManager defaultManager];
      [manager moveItemAtURL:location toURL:[NSURL fileURLWithPath:cacepath] error:nil]; }];
      // 3、执行任务
      [task resume];
      }
    • 补充

      这里是从网络上面获取图片,方法本身是帮你写到了沙盒中的tmp文件夹中去,因为tmp是临时文件夹,处于不安全的,所以这里就把写入的图片移动到沙盒的Caches中去了,但是它的缺点为不能获取下载的进度,不能让界面实时更新,在后面的文章中,我会以Demo的形式展现出来。

  • NSURLSessionUploadTask

    这里的话上传和进度下载会在后面抽取两篇文章出来,这里就不简约展示了

 

iOS开发网络篇-NSURLSession介绍的更多相关文章

  1. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  2. iOS开发——网络篇——NSURLSession,下载、上传代理方法,利用NSURLSession断点下载,AFN基本使用,网络检测,NSURLConnection补充

    一.NSURLConnection补充 前面提到的NSURLConnection有些知识点需要补充 NSURLConnectionDataDelegate的代理方法有一下几个 - (void)conn ...

  3. iOS开发网络篇—JSON介绍

    一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {" ...

  4. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  5. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...

  6. iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

    iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...

  7. iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  8. 02.iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  9. iOS开发网络篇—大文件的多线程断点下载

    http://www.cnblogs.com/wendingding/p/3947550.html iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时 ...

随机推荐

  1. composer安装yii2或者laravel报错

    大概的信息就是提示让登陆github,然后就报错了 Could not fetch https://api.github.com/authorizations, enter your GitHub c ...

  2. 使用CSS画一个三角形

    <div style="width:0px;height:0px;border-width:40px;border-style:solid;border-color:transpare ...

  3. Azure Bill

    MSDN的本月订阅的被用完了,所有的付费订阅均变成了不可用的状态. 信用额度为0元,还有2天能恢复 点击上方的MSDN订阅名会进入更加详细的账单,账单以月的形式提供. 邮件中也会通知您到了限定额度所停 ...

  4. c语言之fopen参数(r+,w+,a+)

    经查找一些资料,并且亲自实验之后得出: r+:打开已存在的文件时,光标位于开头,文件可读,可写, 写数据时,由于光标位于开头,所以会覆盖原有数据 w+:打开的文件已存在时,将覆盖原文件 a+:打开已存 ...

  5. HDFS命令行操作

    启动后可通过命令行使用hadoop. (1)所有命令 (先将$HADOOP_HOME/bin加入到.bashrc的$PATH变量中) [html] view plaincopy [hadoop@nod ...

  6. Java eclipse export jar包 包括第三方引入的jar

    1.安装fatjar插件 2.export jar 说明:安装后,操作说明以官网为准,不同的版本会有不同的右键菜单,我的版本(Eclipse Java EE IDE for Web Developer ...

  7. oracle作业

    http://blog.csdn.net/hao_ds/article/details/38382931 oracle作业各种参数的详细介绍

  8. Redis 四:存储类型之无序集合

    .sadd num a b c 向num集合中添加abc三个元素 .srem num b 从num集合中删除b元素 .smembers num 获取num集合中所有的元素 .sismember num ...

  9. Python之回调魔法

    Python中魔法(前后又下划线)会在对象的生命周期被回调. 借助这种回调, 可以实现AOP或者拦截器的思想. 在Python语言中提供了类似于C++的运算符重在功能:一下为Python运算符重在调用 ...

  10. Halcon学习笔记之缺陷检测(二)

    例程:detect_indent_fft.hdev 说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步: 首先,我们用高斯滤波器构造一个合适的滤波 ...