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() } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。