swift 网络工具类的分装 【转载XMG】

网络常用第三方库:AFNetworking
项目中一般不直接使用第三方库,需要自己进行封装,封装步骤如下

  1. 新建一个类,直接继承自AFHTTPSessionManager
    2.创建单例,swift创建单例更简单,只需要一句话就行
class GGNetWorkingTools: AFHTTPSessionManager {
    /// 单例
    static let shareInstance : GGNetWorkingTools = {
       let tools = GGNetWorkingTools()
        // AFNetworking默认不包含text/html,需要手动增加
        tools.responseSerializer.acceptableContentTypes?.insert("text/html")
        return tools
    }()
}

  1. 封装网络请求
extension GGNetWorkingTools {
    /// 网络请求
    ///
    /// - Parameters:
    ///   - methodType: 请求类型 post or get
    ///   - URLString: 请求地址
    ///   - parameters: 请求参数
    func request(methodType : requestType, URLString : String, parameters : [String : Any], finished : @escaping ((_ result : Any?, _ err : Error?) -> ())) {
        
        // 1. 成功回调闭包
        let successCallBack = { (task : URLSessionDataTask, result : Any?) in
            finished(result!,nil)
        }
        
        // 2. 失败回调闭包
        let failureCallBack = { (task : URLSessionDataTask?, err : Error) in
            finished(nil,err)
        }
        
        if methodType == .GET {
            get(URLString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
        }else {
            post(URLString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
        }
    }
    

}

你可能感兴趣的:(swift 网络工具类的分装 【转载XMG】)