NSURLSession

转载 2015年11月19日 14:33:25


转载自:http://m.blog.csdn.net/blog/lsc19890723/40953983

快一年左右未在CSDN上发表新文章了,基本上都保存在自己的本地。难得闲下来,还是将自己的一些资料发布到网上供大家一起交流,参考。

        NSURLSession是苹果一种HTTP网络请求方式,想必有经验的都知道在iOS开发中,HTTP网络请求方式有很多种。比如:

ASIHTTPRequest

AFNetworking等

在以前的开发中,我比较习惯使用ASIHTTPRequest,但是自从ARC之后,ASIHTTPRequest没有更新升级了,不过还是能够满足日常的开发需求,同时使用cocospods管理,ASIHTTPRequest在ARC的条件下,也比较方便了。当然ASIHTTPRequest与AFNetworking之间各有优缺点。同时毕竟是第三方库存在太大不确定的因素,为此,我在日常的开发当中,慢慢的移除第三方库或自己基于苹果提供的API进行二次封装,提供接口。好了,不废话了,切入本文的主题,NSURLSession的使用,直接上代码:

1、简单请求

NSURLRequest *request = [[NSURLRequest allocinitWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];

    NSURLSession *urlSession = [NSURLSession sharedSession];

    NSURLSessionDataTask *dataTask = [urlSession dataTaskWithRequest:request

                                                   completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

                                                       NSLog(@"data > %@", data);

                                                   }];

    [dataTask resume];

    //    [dataTask suspend];

    //    [dataTask cancel];

    

    NSURLSessionDownloadTask *downloadTask = [urlSession downloadTaskWithRequest:request

                                                               completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {

                                                                   NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYESfirstObject];

                                                                   NSURL *documentsDirectoryURL = [NSURL fileURLWithPath:documentsPath];

                                                                   NSURL *newFileLocation = [documentsDirectoryURL URLByAppendingPathComponent:[[response URLlastPathComponent]];

                                                                   [[NSFileManager defaultManagercopyItemAtURL:location toURL:newFileLocation error:nil];

                                                               }];

    [downloadTask resume];

    

    NSURLSessionUploadTask *uploadTask = [urlSession uploadTaskWithRequest:request

                                                                  fromData:nil

                                                         completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

                                                             

                                                         }];

    [uploadTask resume];


2、POST请求

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

    

    NSMutableURLRequest *request = [[NSMutableURLRequest allocinitWithURL:[NSURL URLWithString:@"url地址"]];

    [request setHTTPMethod:@"POST"];

    [request setHTTPBody:[@"version=1.0.0&os_version=7.1.2&os_type=iOS" dataUsingEncoding:NSUTF8StringEncoding]];

    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];

    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request

                                                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

                                                    

                                                    NSLog(@"获取到的数据>%@", [[NSString allocinitWithData:data

                                                                                              encoding:NSUTF8StringEncoding]);

                                                }];

    [dataTask resume];

NSURLSession的介绍和说明

相关组件 NSURLSessionNSURLSessionConfigurationNSURLSessionDataTaskNSURLSessionUploadTaskNSURLSessionD...
  • bravegogo
  • bravegogo
  • 2016年04月30日 16:55
  • 743

NSURLSession的网络请求类

ios9以后弃用NSURLConnection的方法,用NSURLSession封装网络请求: 根据返回类型建三个方法去请求 //对于json的请求 + (void)postSessionWi...
  • gwh111
  • gwh111
  • 2015年11月25日 15:33
  • 3132

IOS网络开发NSURLSession详解(一)概述

原创blog,转载请注明出处blog.csdn.net/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.csdn.net/column/details/huang...
  • Hello_Hwc
  • Hello_Hwc
  • 2015年03月21日 10:03
  • 13891

网络-NSURLSession应用和原理

网络-NSURLSession1. 简介NSRULConnection使用runloop来达到异步下载的,原理:Runloop保证重要的任务流畅执行; 分配固定时隙,实现单一线程异步; c...
  • CSDNhaoren13
  • CSDNhaoren13
  • 2016年03月05日 16:32
  • 1536

iOS 开发 NSURLSession使用大全详解(包括请求,上传和断点下载)

NSURLSession基本特点 用于替代 NSURLConnection 支持后台运行的网络任务 暂停、停止、重启网络任务,不再需要 NSOperation 封装 请求可以使用同样的配置容器 直接使...
  • kuangdacaikuang
  • kuangdacaikuang
  • 2016年11月29日 18:57
  • 1311

使用NSURLSession简单做一个上传图片的方法

通常上传文件、图片。使用http请求的POST方法,在body体中还有一些固定的格式。iOS SDK中的NSURLSession是一个heigh-level API,由于上传图片是一次性请求,实现起来...
  • hherima
  • hherima
  • 2017年04月27日 15:45
  • 1349

利用NSURLSession实现https请求

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view...
  • PZ0605
  • PZ0605
  • 2016年07月19日 19:32
  • 6505

NSURLSession如何上传图片的同时带有参数

好久没有写过博客了,之前一直在小公司做搬运工。现在幡然醒悟开始做些研究性的东西吧。nsurlsession是AFNetworking3.0优化以后才引起我的注意的。这次从头写起,就是把请求这块从零开始...
  • u011864410
  • u011864410
  • 2016年04月21日 20:24
  • 1842

ios NSURLSession Post请求

- (void)sendPostRequest{     NSURLSession *session = [NSURLSessionsharedSession];     NSString...
  • u012485897
  • u012485897
  • 2017年02月16日 10:33
  • 567

从 NSURLConnection 到 NSURLSession

转自:http://objccn.io/issue-5-4/ iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载系统的彻底重构...
  • icash
  • icash
  • 2015年03月26日 16:30
  • 9291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSURLSession
举报原因:
原因补充:

(最多只允许输入30个字)