Swift利用AFN實(shí)現(xiàn)封裝網(wǎng)絡(luò)請(qǐng)求詳解
前言
相信大家都知道,我們一般在一個(gè)項(xiàng)目中,網(wǎng)絡(luò)請(qǐng)求都封裝成一個(gè)單例,以確保整個(gè)項(xiàng)目的網(wǎng)絡(luò)請(qǐng)求 Session 是同一個(gè).
單例模式定義:一個(gè)類有且僅有一個(gè)實(shí)例,并且自行實(shí)例化向整個(gè)系統(tǒng)提供,下面話不多說了,來一起看看詳細(xì)的介紹吧。
通過cocoaPods 導(dǎo)入第三方框架
01-切換到項(xiàng)目目錄
cd 項(xiàng)目名稱
02-初始化Pods
pod init
03-打開 Pods 文件
open Podfile
04-編輯 Podfile
# 設(shè)置支持最低平臺(tái) platform :ios, '8.0' target 'TestSwiftMixAFN' do # 如果是Swift項(xiàng)目,需添加"use_frameworks!" use_frameworks! pod "AFNetworking" end
05-安裝 Pods
pod install
封裝AFN網(wǎng)絡(luò)請(qǐng)求工具
1 創(chuàng)建一個(gè)工具類, 繼承自 AFHTTPSessionManager
import AFNetworking class XMSessionManager: AFHTTPSessionManager { // ... }
2 通過單例創(chuàng)建一個(gè)AFHTTPSessionManager 實(shí)例
/// 創(chuàng)建網(wǎng)絡(luò)請(qǐng)求單例 static let shared: XMSessionManager = XMSessionManager() ---------------------------------------------------------------- /// 如果需要設(shè)置請(qǐng)求的屬性,可在閉包中添加 /// 在第一次訪問時(shí),執(zhí)行閉包,并且將結(jié)果保存在 shared 常量中 static let shared1: XMSessionManager = { // 實(shí)例化對(duì)象 let manager = XMSessionManager() // 設(shè)置響應(yīng)反序列化支持的數(shù)據(jù)類型 manager.responseSerializer.acceptableContentTypes?.insert("text/plain") // 返回對(duì)象 return manager }()
3 通過枚舉, 添加HTTP請(qǐng)求方法(GET/POST)
/// 枚舉-請(qǐng)求方法 /// /// - GET: GET /// - POST: POST enum XMHTTPMethod { case GET case POST }
4 自定義網(wǎng)絡(luò)請(qǐng)求方法,通過閉包回調(diào)請(qǐng)求完成后的數(shù)據(jù)
/// 封裝網(wǎng)絡(luò)請(qǐng)求方法 /// /// - Parameters: /// - Method: GET/POST, 默認(rèn)是GET請(qǐng)求 /// - URLString: 請(qǐng)求地址 /// - parameters: 參數(shù) /// - completed: 結(jié)束回調(diào) func request(Method:XMHTTPMethod = .GET, URLString: String,parameters: [String: AnyObject]?, completed:@escaping ((_ json: AnyObject?, _ isSuccess: Bool)->())) { /// 定義成功回調(diào)閉包 let success = { (task: URLSessionDataTask,json: Any?)->() in completed(json as AnyObject?,true) } /// 定義失敗回調(diào)閉包 let failure = {(task: URLSessionDataTask?, error: Error)->() in completed(nil,false) } /// 通過請(qǐng)求方法,執(zhí)行不同的請(qǐng)求 // 如果是 GET 請(qǐng)求 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 網(wǎng)絡(luò)請(qǐng)求工具的使用
///GET 請(qǐng)求 XMSessionManager.shared.request(URLString: "http:xxx", parameters: nil, completed:{(json: AnyObject?,isSuccess: Bool)-> () in // 請(qǐng)求成功 if isSuccess { print(json ?? "") } else { print("請(qǐng)求失敗") } }) ///POST 請(qǐng)求 XMSessionManager.shared.request(URLString: "www.xxx.xxx", parameters: ["key":"value" as AnyObject], completed:{(json: AnyObject?,isSuccess: Bool)-> () in // 請(qǐng)求成功 if isSuccess { print(json ?? "") } else { print("請(qǐng)求失敗") } })
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Swift中內(nèi)置的集合類型學(xué)習(xí)筆記
Swift中自帶數(shù)組、set、字典三大集合類型,這里將學(xué)習(xí)過程中的基礎(chǔ)的Swift中內(nèi)置的集合類型學(xué)習(xí)筆記進(jìn)行整理,需要的朋友可以參考下2016-06-06swift4.2實(shí)現(xiàn)新聞首頁(yè)導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了swift4.2實(shí)現(xiàn)新聞首頁(yè)導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07使用Swift實(shí)現(xiàn)iOScollectionView廣告無限滾動(dòng)效果(DEMO)
本文給大家分享使用Swift實(shí)現(xiàn)iOScollectionView廣告無限滾動(dòng)效果(DEMO),非常不錯(cuò),具有一定的參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-11-11SwiftUI?引導(dǎo)頁(yè)界面實(shí)現(xiàn)示例
這篇文章主要為大家介紹了SwiftUI?引導(dǎo)頁(yè)界面實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>類型解析
這篇文章主要為大家介紹了Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>的類型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Swift算法實(shí)現(xiàn)逐字翻轉(zhuǎn)字符串的方法示例
大家都知道翻轉(zhuǎn)字符串在字符串算法中算是比較常見的,下面這篇文章主要介紹了Swift算法實(shí)現(xiàn)逐字翻轉(zhuǎn)字符串的方法,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03swift實(shí)現(xiàn)自定義圓環(huán)進(jìn)度提示效果
這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)自定義圓環(huán)進(jìn)度提示效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05用Swift構(gòu)建一個(gè)簡(jiǎn)單的iOS郵件應(yīng)用的方法
這篇文章主要介紹了用Swift構(gòu)建一個(gè)簡(jiǎn)單的iOS郵件應(yīng)用的方法,包括查看和標(biāo)記已讀等基本的郵件應(yīng)用功能,需要的朋友可以參考下2015-07-07