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

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-

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,601评论 2 45
  • 属于我的2.0时代来了。 距离2015年7月1日,已经过去整整两年多了。而现在的这份工作,和大多数人一样,已经是我...
    34号先生阅读 200评论 0 0
  • 掌握要点:1、理解事件流2、使用事件处理程序3、不同的事件类型 一、事件流事件流描述的是从页面中接受事件的顺序。I...
    罗小耳阅读 168评论 0 1
  • 二十三、四岁是一个很尴尬的年纪,说大不大,说小也不小了,回到家里时常被人问起在哪里工作,工资多少,谈了男朋友没有,...
    芥蓝若梦阅读 1,355评论 49 7