美文网首页收藏swift
swift原生网络请求 URLSession

swift原生网络请求 URLSession

作者: 王家薪 | 来源:发表于2017-08-15 00:25 被阅读166次

    用AF太爽了 以至于原生的网络请求都不会写了,这让今天面试的我非常尴尬,恰逢首次搭建服务器完成,于是就写下原生求求搞搞事

    URLRequest

    请求类,包含一些请求的属性,包括请求头,请求体,请求路径等.对应OC中的NSURLReques

    var request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30)
    

    初始化一个请求对象 url不必说 cachePolicy是缓存策略,决定是否使用缓存,详细介绍->缓存策略 timeoutInterval表示超时时间

    request.httpMethod = "POST"
    

    设置请求方式,常用的就是GET和POST,其他方式并不常用,不列举了

    request.setValue("text/html", forHTTPHeaderField: "Content-Type")
    request.addValue("value", forHTTPHeaderField: "custom")
    

    设置请求头或者添加一个请求头字段 字段详解

    let str = "id=10&name=wangwuhua"
    let data = str.data(using: .utf8)
    request.httpBody = data
    

    GET参数是在url中包含的,如果是POST就需要像上面那样设置请求体了

    URLSession

    会话类,负责网络通讯,包含请求,上传,下载三种通讯方式,对应OC的NSURLSession 通常使用它的单利对象就可以了

            let request = URLRequest(url: url, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 30)
            let session = URLSession.shared
            let dataTask = session.dataTask(with: request) { (data, respons, error) in
                
                print(error as Any)
                if data == nil {return}
                if respons == nil {return}
                
                let str = String(data: data!, encoding: .utf8)
                print(str as Any)
                print(respons!)
            }
            dataTask.resume()
    

    这是一个完整的GET请求dataTask是URLSessionTask的子类URLSessionDataTask的对象,请求不是自动开启的 需要手动调用dataTask.resume方法开启

    URLSessionTask

    管理请求生命周期的类,包含子类URLSessionDataTask URLSessionUploadTask URLSessionDownloadTask URLSessionStreamTask

    作用 父类
    URLSessionDataTask 请求数据 URLSessionTask
    URLSessionUploadTask 上传数据 URLSessionDataTask
    URLSessionDownloadTask 下载数据 URLSessionTask
    URLSessionStreamTask tcp/upd长连接 URLSessionTask

    URLSessionTask的主要作用就是管理会话的状态,主要方法有:
    cancel: 取消本次会话
    suspend: 暂停本次会话
    resume: 开始或继续
    state: 当前会话状态

    相关文章

      网友评论

        本文标题:swift原生网络请求 URLSession

        本文链接:https://www.haomeiwen.com/subject/sliprxtx.html