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

来源:互联网 发布:js 判断是否为整数 编辑:程序博客网 时间:2024/05/01 14:08

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

Data Task用于加载数据,使用全局的sharedSession()和func dataTaskWithRequest方法创建,示例代码如下:

import UIKitclass ViewController: UIViewController {    func sessionLoadData() {    //创建Session对象        var url:NSURL! = NSURL(string: "http://www.weather.com.cn/adat/sk/101010100.html")        //创建请求对象        var request:NSURLRequest = NSURLRequest(URL: url)        let session = NSURLSession.sharedSession()        var dataTask = session.dataTaskWithRequest(request, completionHandler:                        { (var data:NSData?,var response:NSURLResponse?,var error:NSError?)-> Void in            //返回错误信息            if error != nil            {                println(error?.code)                println(error?.description)                }            else {                var jsonString = NSString(data: data!, encoding: NSUTF8StringEncoding)                println(jsonString)                                                }            }) as NSURLSessionTask        dataTask.resume()    }}

第二种DownLoad Task用于完成下载文件的任务

如果不需要获取进度,则使用全局的sharedSession()和func downLoadTaskWithRequest方法。

import UIKitclass ViewController: UIViewController {    func sessionSimpleDownload() {    //创建Session对象        var url:NSURL! = NSURL(string: "http://www.yjz9.com/uploadfile/2014/1126/20141126115435256.jpg")        //创建请求对象        var request:NSURLRequest = NSURLRequest(URL: url)        let session = NSURLSession.sharedSession()        var downloadTask = session.downloadTaskWithRequest(request, completionHandler: {(var location:NSURL?,var response:NSURLResponse?,var error:NSError?) ->Void in            //输出下载文件原来的存放目录            println("location: \(location)")                        //location 位置转换            var locationPath = location?.path            //拷贝到我们自己的目录中            let documents:String = NSHomeDirectory() + "/Documents/1.png"            //创建文件管理器            var fileManager:NSFileManager = NSFileManager.defaultManager()            fileManager.moveItemAtPath(locationPath!, toPath: documents, error: nil)            println("location: \(documents)")        })        downloadTask.resume()}}

运行程序,然后查看路径;


文件已经被拷贝进去了。

上传文件和下载文件的方法非常相似:

    func sessionSimpleUpload() {    //创建Session对象        var url:NSURL! = NSURL(string: "http://www.iphonetrain.com/shop/data/")        //创建请求对象        var request:NSURLRequest = NSURLRequest(URL: url)        let session = NSURLSession.sharedSession()        //上传数据流        let documents:String = NSHomeDirectory() + "/Documents/1.png"        var imgData = NSData(contentsOfFile: documents)        var uploadTask = session.uploadTaskWithRequest(request, fromData: imgData, completionHandler: {            (var data:NSData?,var response:NSURLResponse?,var error:NSError? )-> Void in            println("上传完毕")        })        uploadTask.resume()}}


1 0
原创粉丝点击