Swift3 1.简单的网络请求(POST)

最近开始做新项目, 决定使用Swift 来做, 几个月前看了一下还是Swift2 现在已经到Swift3 了, 听说改动非常大。 那么直接从3学起吧,希望别出个4又改动非常大!

新做的项目会开始涉及到非常多的方面, 以前我是用object-c的, 所以上手Swift可能会有些不适应。

废话少说, 直接上代码:


import UIKit


/// 网络访问基类
class BaseNetwrok: NSObject {

    
    /// Post 访问
    ///
    /// - Parameters:
    ///   - url: 服务器链接
    ///   - params: POST参数
    func post(url:String,params:NSMutableDictionary) {
        
        //创建会话对象
        let session     = URLSession.shared
        let serUrl      = URL(string:url)
        var request     = URLRequest(url: serUrl!)
        
        //设置访问方式为POST
        request.httpMethod = "POST"
        
        //设置POST 内容
        request.httpBody = getBody(params: params).data(using: String.Encoding.utf8)
        
        //开始访问
        let dataTask : URLSessionDataTask = session.dataTask(with: request) { (data,respones,error)  -> Void  in
            
            //访问结束
            if(error != nil) {
                //返回出错
                print(error.debugDescription)
            } else {
                
                //返回成功
                let str = String(data: data!,encoding: String.Encoding.utf8)
                
                print(str ?? "error")
            }
            
        }
        dataTask.resume()
    }
    
    
    /// 获取post内容
    ///
    /// - Parameter params: 参数
    /// - Returns: Body
    func getBody(params:NSMutableDictionary) -> String {
        
        var body : String = "";
        
        for (key,value) in params {
            
            let str = "\(key)=\(value)&"
            
            body = body + str
        }
        
        if(body.characters.count > 1) {
            body = (body as NSString).substring(to: body.characters.count-1)
        }
        
        return body
    }
}

以上是一个非常普通, 非常简单的网络访问。

调用代码:

let md = NSMutableDictionary()

let a = BaseNetwrok ()

a.post(url: "http://www.baidu.com",params: md)


待后续会上传更复杂的访问方式。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...