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()
               }
        
             }

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

相关文章推荐

Swift - 使用NSURLSession加载数据、下载、上传文件

原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_780.html NSURLSession类支持三种类型...

Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载

NSURLSession类支持三种类型的任务:加载数据、下载和上传,即Data Task,DownLoad Task和Upload Task。Session Task是整个NSURLSession架构...

IOS 网络开发NSURLSession(四)UploadTask(上传数据+图片)

原创blog,转载请注明出处 blog.csdn.net/hello_hwc前言: UploadTask继承自DataTask。不难理解,因为UploadTask只不过在Http请求的时候,把数据...

iOS之网络—— NSURLSessionDataTask文件离线断点下载、NSURLSession文件上传、AFN基本使用、Cocoapods安装

1.使用NSURLSessionDataTask实现大文件离线断点下载(完整) 6.1 涉及知识点 (1)关于NSOutputStream的使用 //1. 创建一个输入流,数据追加到文件的屁股上...

网络请求 NSURLsession(get、post、下载、上传)

NSURLSession的简单介绍 ios9.0开始,NSURLConnection过期,NSURLSession的推出,早就是为了取代NSURLConnection使用步骤:使用NSURLSe...

NSURLSession-介绍、上传、下载(2)

NSURLConnection在iOS9被宣布弃用,NSURLSession从13年发展到现在,终于迎来了它独步江湖的时代.NSURLSession是苹果在iOS7后为HTTP数据传输提供的一系列接口...

iOS开发-使用NSURLSession实现文件断点下载,文件离线续传以及图片上传

NSURLSession是iOS9.0后苹果推出的网络请求框架,用来代替NSURLConnecttion。本文章介绍了怎么使用NSURLSession实现GET,POST请求,以及文件断点下载和文件上...
  • Cehae
  • Cehae
  • 2016年11月13日 16:02
  • 609

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

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

NSURLSession(Get & Post,JSON、XML数据解析,文件上传下载)

NSURLSession(Get & Post,JSON、XML解析,文件上传下载)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NSURLSession加载数据 下载上传
举报原因:
原因补充:

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