swift 网络请求

在iOS11即将发布之际,现在越来越多的开发者开始使用swift语言做开发,swift语言也越来越成熟,最近一段时间,在工作之余对网络请求就swift语言进行了封装。

封装伊始

首先声明一个类继承于AFHTTPSessionManager

class SwiftHttpNetwork: AFHTTPSessionManager

BaseUrl

 func setBaseUrl (baseURL:NSString?,timeOutInterval :Double ){
        SwiftHttpNetwork._baseURL = baseURL
        SwiftHttpNetwork.networkManager = SwiftHttpNetwork.init(baseURL:self.baseURL)
       SwiftHttpNetwork.networkManager?.requestSerializer = AFHTTPRequestSerializer()
       SwiftHttpNetwork.networkManager?.responseSerializer = AFJSONResponseSerializer.init()
        // 信任证书
        SwiftHttpNetwork.networkManager?.securityPolicy = AFSecurityPolicy.init(pinningMode: AFSSLPinningMode.none)
        SwiftHttpNetwork.networkManager?.securityPolicy.allowInvalidCertificates = true
        SwiftHttpNetwork.networkManager?.securityPolicy.validatesDomainName = false
        SwiftHttpNetwork.networkManager?.requestSerializer.timeoutInterval = timeOutInterval
        let contentTypes: Set = ["application/json", "text/json", "text/javascript","text/html", "application/x-javascript"]
        SwiftHttpNetwork.networkManager?.responseSerializer.acceptableContentTypes = contentTypes
    }

post请求

今天先为大家介绍一下我们常用的post请求封装,后期会丰富,如果有同仁有好的意见欢迎留言批评指正

 class func POST(URLString: String, parameters:Dictionary<String, Any>, completion: @escaping ( _ dataDic: Any  ) ->Void, backError:@escaping ( _ error: Error  ) ->Void) ->Void {

        SwiftHttpNetwork.networkManager = SwiftHttpNetwork.init()
        SwiftHttpNetwork.networkManager?.requestSerializer = AFHTTPRequestSerializer()
        SwiftHttpNetwork.networkManager?.responseSerializer = AFJSONResponseSerializer.init()
        // 信任证书
        SwiftHttpNetwork.networkManager?.securityPolicy = AFSecurityPolicy.init(pinningMode: AFSSLPinningMode.none)
        SwiftHttpNetwork.networkManager?.securityPolicy.allowInvalidCertificates = true
        SwiftHttpNetwork.networkManager?.securityPolicy.validatesDomainName = false

        let contentTypes: Set = ["application/json", "text/json", "text/javascript","text/html", "application/x-javascript"]
        SwiftHttpNetwork.networkManager?.responseSerializer.acceptableContentTypes = contentTypes
        let urlsting :String  = kBaseUrlApi + URLString
        SwiftHttpNetwork.networkManager?.post(urlsting, parameters: parameters, progress: nil, success: { (task :URLSessionDataTask, data:Any) in
          return completion(data)

        }, failure: { (task:URLSessionDataTask, error:Error ) in
            return  backError(error)
            } as? (URLSessionDataTask?, Error) -> Void)
    }

参考demo:https://github.com/hw2396611405/swiftObject.git
在demo中会持续更新swift一些新特性的使用,比如闭包,函数 欢迎各位关注,star!!!
当然,在这次封装中还有一些冗余代码,可以进一步封装,欢迎各位同仁留言交流

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值