网络请求方法枚举
/// 请求方法
enum HMRequestMethod: String {
case GET = "GET"
case POST = "POST"
}
单例 & 响应格式设置方法
/// 网络工具类
class NetworkTools: AFHTTPSessionManager {
/// 网络工具单例
static let sharedTools: NetworkTools = {
let tools = NetworkTools(baseURL: nil)
tools.responseSerializer.acceptableContentTypes?.insert("text/html")
return tools
}()
}
AFN 内部方法封装
// MARK: - 封装 AFN 内部方法
extension NetworkTools {
/// 请求回调
typealias RequestCallBack = (result: AnyObject?, error: NSError?) -> ()
/// 网络请求方法
///
/// - parameter method: 请求方法 GET / POST
/// - parameter URLString: URLString
/// - parameter parameters: 参数字典
/// - parameter finished: 完成回调
func request(method: HMRequestMethod, URLString: String, parameters: [String: AnyObject]?, finished:RequestCallBack) {
// 成功回调
let success = { (task: NSURLSessionDataTask, result: AnyObject) -> Void in
finished(result: result, error: nil)
}
// 失败回调
let failure = { (task: NSURLSessionDataTask, error: NSError) -> Void in
print(error)
finished(result: nil, error: error)
}
if method == HMRequestMethod.GET {
GET(URLString, parameters: parameters, success: success, failure: failure)
} else {
POST(URLString, parameters: parameters, success: success, failure: failure)
}
}
}
控制器调用
NetworkTools.shareInstance.request(.GET, urlString: "http://httpbin.org/get", parameters: ["name" : "why"]) { (result, error) -> () in
if error != nil {
print(error)
return
}
print(result)
}
}