NSURLSession加载数据 下载上传

来源:互联网 发布:linux cpu 进程 编辑:程序博客网 时间:2024/06/05 09:40

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

0 0
原创粉丝点击