加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:23:45 所属栏目:百科 来源:网络整理
导读:NSURLSession类支持三种类型的任务:加载数据、下载和上传,即Data Task,DownLoad Task和Upload Task。Session Task是整个NSURLSession架构的核心目标。 Data Task用于加载数据,使用全局的sharedSession()和func dataTaskWithRequest方法创建,示例代码

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

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

import UIKit

class 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 UIKit

class 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 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 error:NSError? )-> Void in
            println("上传完毕")
        })
        uploadTask.resume()
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读