NSURLSession加载数据 下载上传

原创 2015年11月20日 20:35:14

NSURLSession类支持三种类型的任务 :加载数据 下载和上传 为data task download task 和 upload task session task是整个NSURLSeesion架构的核心

//加载数据
    func sessionLoadData() {
        //创建NSURL对象
        var url = NSURL(string: "http://m.weather.com.cn/data/101010100/html")
        //创建请求的对象
        var request = NSURLRequest(URL: url!)
        let session = NSURLSession.sharedSession()
        var dataTask = session.dataTaskWithRequest(request, completionHandler: { (data:NSData?, resp:NSURLResponse?, error:NSError?) -> Void in
            //返回错误的情况
            if error != nil {
                print(error?.code)
                print(error?.description)
            }else {
                var jsonString = NSString(data: data!, encoding: NSUTF8StringEncoding)
                print(jsonString)
            }
        })as NSURLSessionTask
        //使用resume方法启动任务
        dataTask.resume()
    }

//加载数据
    func sessionSimpleDownLoad() {
        //创建NSURL对象
        var url = NSURL(string: "http://m.weather.com.cn/data/101010100/html")
        //创建请求的对象
        var request = NSURLRequest(URL: url!)
        let session = NSURLSession.sharedSession()
        var dataDownLoadTask = session.downloadTaskWithRequest(request) { (var location:NSURL?, resp:NSURLResponse?, error:NSError?) -> Void in
        //输出下载文件原来的存放目录
            print("location:\(location)")
            //location的位置转化
            var locationPath = location?.path
            //拷贝到自己的目录中
            let document = NSHomeDirectory() + "/Documents/1.jpg"
            //创建文件的管理器
            do   { self.fileManger = try NSFileManager.defaultManager()
            }
            catch{
                print("创建文件管理器失误")
            }
            do { try self.fileManger.moveItemAtPath(locationPath!, toPath: document)
            }
            catch{
                print("转化路径失败")
            }
        }
        //输出文件路径
        print("location \(document)")
        //使用resume方法启动任务
       dataDownLoadTask.resume()
    }

//获取下载的获取进度的话 

 func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
        //下载结束的时候
        print("下载结束")
    }
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
        //获取进度
        var written = (CGFloat)(bytesWritten)
        var total = (CGFloat)(totalBytesExpectedToWrite)
        //目前的进度 现在的除以总共的
        var pro = written / total
        print("下载进度\(pro)")
    }
    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didResumeAtOffset fileOffset: Int64, expectedTotalBytes: Int64) {
        //下载偏移 主要用于暂停续传
        print("下载偏移")
    }

上传数据
 func sessionUpload() {
        //创建NSURL对象
        var url = NSURL(string: "http://m.weather.com.cn/data/101010100/html")
        //创建请求的对象
        var request = NSURLRequest(URL: url!)
        let session = NSURLSession.sharedSession()
        //上传的数据流
        var document = NSHomeDirectory() + "/Documents/1.jpg"
        var imageData = NSData(contentsOfFile: document)
        //上传的任务
        var uploadTask = session.uploadTaskWithRequest(request, fromData: imageData) { (data:NSData?, resp:NSURLResponse?, error:NSError?) -> Void in
            //上传完毕之后判断
            print("上传完毕")
        }
        //执行任务
        uploadTask.resume()
               }
        
             }

版权声明:本文为博主原创文章,未经博主允许不得转载。

ios NSURLSession 来请求图片和json数据

先上图: 以下的两个demo都用到了我基于NSURLSession来封装的一个网络请求的block(后面附录TFNetWorkManager源码) 一. 利用NSURLSession来增量下载...
  • robinson_911
  • robinson_911
  • 2016年09月16日 12:29
  • 579

iOS开发 ----- 网络请求5 ----- NSURLsession实现上传数据

NSURLSession上传数据前边写的是用AFNetWorking实现的上传,当时还比较懵逼,不知道自己怎么上传,今天又详细分析了一下,又扒了几篇博客,现在已经实现了自己上传,下边先说下原理1. 上...
  • xiao333ma
  • xiao333ma
  • 2015年09月28日 13:24
  • 1915

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

*  会话NSURLSession     NSURLConnection通过全局状态来管理cookies, 认证信息等公共资源, 如果两个连接需要使用不同的资源配置情况时就无法解决,    ...
  • xy_26207005
  • xy_26207005
  • 2016年06月02日 11:11
  • 8089

NSURLSession普通多任务下载和断点续传并保存显示进度条

关于NSURLSessionde可以参见http://blog.csdn.net/majiakun1/article/details/38133433
  • u010530716
  • u010530716
  • 2014年11月20日 20:09
  • 4094

通过nsurlsession向服务器传送json数据

近几天真是被json搞死了 终于知道该怎么用json向服务器传输json了 直接贴代码吧 //多样性的request let request = NSMutableURLR...
  • qq_31214097
  • qq_31214097
  • 2015年12月26日 20:19
  • 1055

NSURLSession参数、文件上传实例

-(IBAction)httpGetData:(id)sender{ NSURLSessionConfiguration *config1 = [NSURLSessionConfigurati...
  • daleiwang
  • daleiwang
  • 2016年02月24日 15:36
  • 1853

【iOS开发-99】POST四种数据提交方式以及NSURLSession上传任务的一些知识

POST四种数据提交方式以及NSURLSession上传任务的一些知识
  • wsb200514
  • wsb200514
  • 2014年12月26日 14:27
  • 2047

用NSUrlSession批量下载文件并保存文件的处理

现在我来介绍之前说过的用NSUrlSession批量下载的方法,用NSUrlSession下载文件,有两种方法,一是直接调用Block方法做下载后的处理,二是利用NSUrlSessionDelegat...
  • ZhongLv_HoneyMoon
  • ZhongLv_HoneyMoon
  • 2017年04月17日 16:26
  • 541

关于 NSURLSession 的上传和下载

关于 NSURLSession 的上传和下载在iOS7.0后,苹果公司新推出了一个NSURLSession来代替NSURLConnection。NSURLConnection默认是在 主线程执行的。而...
  • iOS_MingXing
  • iOS_MingXing
  • 2016年01月11日 13:56
  • 153

iOS使用NSURLSession进行下载(包括后台下载,断点下载)

转载:http://www.jianshu.com/p/1211cf99dfc3 从iOS7以来,苹果推出NSURLSession后,iOS现在可以实现真正的后台下载,这对我们iOS...
  • u012361288
  • u012361288
  • 2017年01月19日 13:53
  • 380
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSURLSession加载数据 下载上传
举报原因:
原因补充:

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