Swift 2.3 【封装网络请求业务类 AFNetworking/ Alamofire】
2016-02-01 15:14
531 查看
对于网络请求类AFNetworking,在Swift中应该怎样使用和封装一个业务类呢?
上期我们讲到如何在OC中封装一个网络请求的业务类,今天提供一下Swift发送网络请求的业务类写法。提供
AFNetworking 和 Alamofire 两种框架网络请求。
其实两个框架本质一样,均出自一个作者,安装可到 github 去下载或者使用 CocoaPods 集成。个人推荐使用 AFNetworking,因为 Alamofire 提示不太好,很多函数如果不知道名称就不知道如何调用。
读者可以结合OC的网络请求业务类封装去理解本文,传送门:
一、AFNetworking
① 封装业务类
② 如何使用(只写了调用代码)
二、Alamofire
① 封装业务类
② 如何使用
上期我们讲到如何在OC中封装一个网络请求的业务类,今天提供一下Swift发送网络请求的业务类写法。提供
AFNetworking 和 Alamofire 两种框架网络请求。
其实两个框架本质一样,均出自一个作者,安装可到 github 去下载或者使用 CocoaPods 集成。个人推荐使用 AFNetworking,因为 Alamofire 提示不太好,很多函数如果不知道名称就不知道如何调用。
读者可以结合OC的网络请求业务类封装去理解本文,传送门:
iOS 【network-封装业务类AFNetworking(AFHTTPSessionManager)】
代码描述:一、AFNetworking
① 封装业务类
// // WZYHTTPTools.swift // PhotoBrowser // // Created by 王中尧 on 16/8/15. // Copyright © 2016年 wzy. All rights reserved. // import UIKit import AFNetworking enum WZYRequestMethod { case GET case POST } class WZYHTTPTools: AFHTTPSessionManager { static let shareSessionManager: WZYHTTPTools = { let tools = WZYHTTPTools() // 往Set里面插入数据的特有方式 tools.responseSerializer.acceptableContentTypes?.insert("text/html") return tools }() } extension WZYHTTPTools { // 请求数据操作(GET/ POST) func request(method: WZYRequestMethod, urlString: String, parameters: [String: AnyObject], progress: (progressResult: NSProgress?) -> (), success: (successResult: AnyObject?) -> (), error: (errorResult: NSError?) -> ()) { // 进度回调闭包 let progressCallback = { (progressData: NSProgress) in progress(progressResult: progressData) } // 成功结果回调闭包 let successCallback = { (task: NSURLSessionDataTask, successData: AnyObject?) in success(successResult: successData) } // 失败错误信息回调闭包 let failureCallback = { (task: NSURLSessionDataTask?, errorData: NSError) in error(errorResult: errorData) } if method == .GET { GET(urlString, parameters: parameters, progress: progressCallback, success: successCallback, failure: failureCallback) } else { POST(urlString, parameters: parameters, progress: progressCallback, success: successCallback, failure: failureCallback) } } }
② 如何使用(只写了调用代码)
let dict = ["wzy": "laolao"] WZYHTTPTools.shareSessionManager.request(.GET, urlString: "http://120.25.226.186:32812/login?username=xxx&pwd=xxx", parameters: dict, progress: { (progressResult) in print((progressResult?.completedUnitCount)! / (progressResult?.totalUnitCount)!) }, success: { (successResult) in print(successResult) }) { (errorResult) in print(errorResult) }
二、Alamofire
① 封装业务类
// // WZYHTTPTool.swift // WZYBaisiSwift // // Created by 王中尧 on 16/8/14. // Copyright © 2016年 wzy. All rights reserved. // import UIKit import Alamofire enum WZYHTTPToolMethod: String { case GET = "GET" case POST = "POST" } class WZYHTTPTool: NSObject { } extension WZYHTTPTool { class func request(method: WZYHTTPToolMethod, urlStr: String, params: [String: AnyObject]? = nil, finished:(successData: AnyObject?, error: NSError?) -> ()) { if method == .GET { // GET 请求 Alamofire.request(.GET, urlStr, parameters: params).responseJSON(completionHandler: { response in if response.result.isSuccess { finished(successData: response.result.value, error: nil) } else { finished(successData: nil, error: response.result.error!) } }) } else { // POST 请求 Alamofire.request(.POST, urlStr, parameters: params).responseJSON(completionHandler: { response in if response.result.isSuccess { finished(successData: response.result.value, error: nil) } else { finished(successData: nil, error: response.result.error!) } }) } } }
② 如何使用
let dict = ["laolao": "wzy"] WZYHTTPTool.request(.GET, urlStr: "http://120.25.226.186:32812/login?username=xxx&pwd=xxx", params: dict) { (successData, error) in guard error == nil else { print(error) return } print(successData) }
相关文章推荐
- afnetworking 和 asihttprequest 强制修改http连接的host地址
- AFNetworking+Nginx+HTTPS自签名服务器安全通信
- iOS应用网络安全之HTTPS
- Transport Security has blocked a cleartext HTTP
- 封装AFNetworking网络工具类(Objective-C)
- AFNetworking下载数据Demo
- swifty引用AFNetworking出现clang: error: linker command failed with exit code 1 (use -v to see invocation
- cocoapods 类库管理利器
- iOS学习之 AFNetworking的使用(一)
- AFNetworking的Post请求
- 【IOS开发】swift版的AFNETworking之Alamofire的用法 图片上传
- 使用Swift调用AFNetworking进行网络请求
- Swift中的HTTP请求
- AFNetworking 新版本3.0的迁移(最新为3.0.4)
- Swift 下AFNetworking得使用
- AFNetWorking的基本使用
- AFNetworking post请求
- 对 AFNetworking 二次封装应用 - POST
- AFNetworking判断当前手机的网络状态
- iOS开发网络数据之AFNetworking使用