麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

Swift利用AFN實現封裝網絡請求詳解

2020-03-09 17:43:54
字體:
來源:轉載
供稿:網友

前言

相信大家都知道,我們一般在一個項目中,網絡請求都封裝成一個單例,以確保整個項目的網絡請求 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 AFNetworkingclass 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: POSTenum 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("請求失敗")   }  })

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色一级片在线免费观看 | 成人福利在线 | 欧美一级美片在线观看免费 | 亚洲欧美国产高清 | 欧美一区二区黄色 | 成品片a免人视频 | 日本在线不卡一区二区三区 | 3344永久免费 | chinesexxxx刘婷hd| 毛片在线视频观看 | 亚洲国产精品久久久久久久久 | 精品久久中文字幕 | 黄视频网站免费观看 | 91美女视频在线观看 | 久久羞羞视频 | 海外中文字幕在线观看 | 最新中文字幕免费视频 | 亚洲少妇诱惑 | 欧美日韩国产一区二区三区在线观看 | 成年免费大片黄在线观看岛国 | 九色一区二区 | 天天撸日日夜夜 | 天堂精品 | 久久国产精品久久久久久电车 | 色人阁五月天 | 黄色羞羞| 中文字幕网站在线 | 日本在线不卡一区二区 | 斗罗破苍穹在线观看免费完整观看 | h色视频在线观看 | 毛片在线播放视频 | 99麻豆久久久国产精品免费 | 亚洲自拍第二页 | 亚洲片在线 | 久久55| h视频免费看| 高清av在线| 日韩视频www | 久久久久999 | 中文字幕综合在线观看 | 国产精品一品二区三区四区18 |