美文网首页
Swift封装网络请求类(中文)

Swift封装网络请求类(中文)

作者: 一束橘子 | 来源:发表于2016-06-14 17:51 被阅读424次

    import UIKit
    class NetRequestManager: NSObject {

    enum 网络请求类型 {
       case GET请求
       case POST请求
    }
    
    class func 请求网络数据(参数1 网址:String,参数2 请求类型:网络请求类型,参数3 POST字典:[String:String]?, 请求成功闭包:((成功参数:NSData)->()), 请求失败闭包:((失败参数:NSError)->()) ) {
        let 网络请求 = NetRequestManager()
        guard let 字典内容 = POST字典 else{
        网络请求 .GET请求网络数据(参数1: 网址, 请求成功闭包: 请求成功闭包, 请求失败闭包: 请求失败闭包)
            return
        }
        网络请求.请求网络数据(参数1: 网址, 参数2:请求类型 , 参数3: 字典内容, 请求成功闭包: 请求成功闭包, 请求失败闭包: 请求失败闭包)
    }
    
    func 根据字典返回请求体Data(请求体字典:[String:String])->(NSData){
        var 数组:[String] = []
        for key in 请求体字典.keys{
            let 拼接字符串 = key + "=" + 请求体字典[key]!
            数组.append(拼接字符串)
        }
        let 请求串:String = 数组.joinWithSeparator("&")
        return 请求串.dataUsingEncoding(NSUTF8StringEncoding)!
    }
    
    func 请求网络数据(参数1 网址:String,参数2 请求类型:网络请求类型,参数3 POST字典:[String:String], 请求成功闭包:((参数:NSData)->()), 请求失败闭包:((参数:NSError)->()) ) {
        let url = NSURL(string: 网址)
        let request = NSMutableURLRequest.init(URL: url!)
        request.timeoutInterval = 10
        if(请求类型 == 网络请求类型.POST请求){
            request.HTTPMethod = "POST"
            if(POST字典.count > 0){
                request.HTTPBody = 根据字典返回请求体Data(POST字典)
            }
        }
        let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { (data, response, error) -> Void in
            if let 成功返回Data = data {
                请求成功闭包(参数: 成功返回Data)
            }
            if let 失败返Error = error {
                请求失败闭包(参数: 失败返Error)
            }
        }
        task.resume()
    }
    
    func GET请求网络数据(参数1 网址:String, 请求成功闭包:((参数:NSData)->()), 请求失败闭包:((参数:NSError)->()) ) {
        
        let url = NSURL(string: 网址)
        let request = NSMutableURLRequest.init(URL: url!)
        request.timeoutInterval = 10
        request.HTTPMethod = "GET"
        let task = NSURLSession.sharedSession().dataTaskWithURL(url!) { (data, response, error) -> Void in
            if let 成功返回Data = data {
                请求成功闭包(参数: 成功返回Data)
                return
            }
            if let 失败返Error = error {
                请求失败闭包(参数: 失败返Error)
                return
            }
        }
        task.resume()
    }}
    

    https://github.com/yellowPea/learn-swift-by-create-a-swift-tableView-

    相关文章

      网友评论

          本文标题:Swift封装网络请求类(中文)

          本文链接:https://www.haomeiwen.com/subject/lgyudttx.html