這次帶給大家AFN封裝網路請求詳解,AFN封裝網路請求的注意事項有哪些,下面就是實戰案例,一起來看一下。
相信大家都知道,我們一般在一個專案中,網路請求都封裝成一個單例,以確保整個專案的網路請求Session 是同一個.
單例模式定義:一個類別有且僅有一個實例,並且自行實例化向整個系統提供,下面話不多說了,來一起看看詳細的介紹吧。
透過cocoaPods 導入第三方框架
01-切換到專案目錄
cd 项目名称
# 02-初始化Pods
pod init
03-開啟 Pods 檔案
open Podfile
# 04-編輯 Podfile
# 设置支持最低平台 platform :ios, '8.0' target 'TestSwiftMixAFN' do # 如果是Swift项目,需添加"use_frameworks!" use_frameworks! pod "AFNetworking" end
# 05-安裝 Pods
pod install
封裝AFN網路請求工具
# 1 建立一個工具類別, 繼承自 AFHTTPSessionManager
import AFNetworking class XMSessionManager: AFHTTPSessionManager { // ... }
2 透過單例建立一個AFHTTPSessionManager 實例
/// 创建网络请求单例 static let shared: XMSessionManager = XMSessionManager() ---------------------------------------------------------------- /// 如果需要设置请求的属性,可在闭包中添加 /// 在第一次访问时,执行闭包,并且将结果保存在 shared 常量中 static let shared1: XMSessionManager = { // 实例化对象 let manager = XMSessionManager() // 设置响应反序列化支持的数据类型 manager.responseSerializer.acceptableContentTypes?.insert("text/plain") // 返回对象 return manager }()
3 透過列舉, 新增HTTP請求方法(GET/POST)
/// 枚举-请求方法 /// /// - GET: GET /// - POST: POST enum XMHTTPMethod { case GET case POST }
4 自訂網路請求方法,透過閉包回呼請求完成後的資料
/// 封装网络请求方法 /// /// - Parameters: /// - Method: GET/POST, 默认是GET请求 /// - URLString: 请求地址 /// - parameters: 参数 /// - completed: 结束回调 func request(Method:XMHTTPMethod = .GET, URLString: String,parameters: [String: AnyObject]?, completed:@escaping ((_ json: AnyObject?, _ isSuccess: Bool)->())) { /// 定义成功回调闭包 let success = { (task: URLSessionDataTask,json: Any?)->() in completed(json as AnyObject?,true) } /// 定义失败回调闭包 let failure = {(task: URLSessionDataTask?, error: Error)->() in completed(nil,false) } /// 通过请求方法,执行不同的请求 // 如果是 GET 请求 if Method == .GET { // GET get(URLString, parameters: parameters, progress: nil, success: success, failure: failure) } else { // POST post(URLString, parameters: parameters, progress: nil, success: success, failure: failure) } }
# 5 網路請求工具的使用
///GET 请求 XMSessionManager.shared.request(URLString: "http:xxx", parameters: nil, completed:{(json: AnyObject?,isSuccess: Bool)-> () in // 请求成功 if isSuccess { print(json ?? "") } else { print("请求失败") } }) ///POST 请求 XMSessionManager.shared.request(URLString: "www.xxx.xxx", parameters: ["key":"value" as AnyObject], completed:{(json: AnyObject?,isSuccess: Bool)-> () in // 请求成功 if isSuccess { print(json ?? "") } else { print("请求失败") } })
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是AFN封裝網路請求詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!