Swift AFN简单封装

封装

import AFNetworking

enum RequestType: String {
    case GET = "GET"
    case POST = "POST"
}

class NetworkTools: AFHTTPSessionManager {
    
    static let shareInstance: NetworkTools = {
        let tools = NetworkTools()
        
        tools.responseSerializer.acceptableContentTypes?.insert("text/html")
        
        return tools
    }()
    
    func request(methodType: RequestType,
                 urlString: String,
                 params: [String: AnyObject]?,
                 success:@escaping (_ json: AnyObject?) -> Void,
                 fail: @escaping (_ error: Error?) -> Void) {
    
        /// 定义成功回调闭包
        let success = { (task: URLSessionDataTask, json: Any?) -> () in
            
            Log("ok")
            
            success(json as AnyObject?)
        }
        
        /// 定义失败回调闭包
        let failure = {(task: URLSessionDataTask?, error: Error)->() in
            
            Log("fail")
            
            fail(error);
        }
        
        if methodType == .GET { // GET
            get(urlString, parameters: params, progress: nil, success: success, failure: failure)
        } else { // POST
            post(urlString, parameters: params, progress: nil, success: success, failure: failure)
        }
    }
}

使用

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        
        NetworkTools.shareInstance.request(methodType: .GET, urlString: "http://localhost/0519/index2.php", params: ["name":"aa" as AnyObject], success: { (obj) in
            Log(obj ?? "没有Success" as AnyObject)
        }) { (error) in
            Log(error ?? ("没有fail" as AnyObject) as! Error)
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容