网络常用第三方库:AFNetworking
项目中一般不直接使用第三方库,需要自己进行封装,封装步骤如下
- 新建一个类,直接继承自AFHTTPSessionManager
2.创建单例,swift创建单例更简单,只需要一句话就行
class GGNetWorkingTools: AFHTTPSessionManager {
/// 单例
static let shareInstance : GGNetWorkingTools = {
let tools = GGNetWorkingTools()
// AFNetworking默认不包含text/html,需要手动增加
tools.responseSerializer.acceptableContentTypes?.insert("text/html")
return tools
}()
}
- 封装网络请求
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)
}
}
}