Dieses Mal werde ich Ihnen eine detaillierte Erklärung zu AFN-gekapselten Netzwerkanfragen geben. Was sind die Vorsichtsmaßnahmen für AFN-gekapselte Netzwerkanfragen?
Ich glaube, jeder weiß, dass wir in einem Projekt normalerweise Netzwerkanfragen in einem Singleton kapseln, um sicherzustellen, dass die Netzwerkanfrage Sitzung des gesamten Projekts dieselbe ist.
Singleton-MusterDefinition: Eine Klasse hat eine und nur eine Instanz und instanziiert sich selbst, um sie dem gesamten System bereitzustellen. Ich werde im Folgenden nicht viel sagen, werfen wir einen Blick auf die detaillierte Einführung.
Frameworks von Drittanbietern über CocoaPods importieren
01-Wechseln Sie zum Projektverzeichnis
cd 项目名称
02-Pods initialisieren
pod init
03-Pods-Datei öffnen
open Podfile
04-Podfile bearbeiten
# 设置支持最低平台 platform :ios, '8.0' target 'TestSwiftMixAFN' do # 如果是Swift项目,需添加"use_frameworks!" use_frameworks! pod "AFNetworking" end
05-Pods installieren
pod install
Encapsulation AFN Network Request Tool
1 Erstellen Sie eine Toolklasse, geerbt von AFHTTPSessionManager
import AFNetworking class XMSessionManager: AFHTTPSessionManager { // ... }
2 Erstellen Sie eine AFHTTPSessionManager-Instanz über einen Singleton
/// 创建网络请求单例 static let shared: XMSessionManager = XMSessionManager() ---------------------------------------------------------------- /// 如果需要设置请求的属性,可在闭包中添加 /// 在第一次访问时,执行闭包,并且将结果保存在 shared 常量中 static let shared1: XMSessionManager = { // 实例化对象 let manager = XMSessionManager() // 设置响应反序列化支持的数据类型 manager.responseSerializer.acceptableContentTypes?.insert("text/plain") // 返回对象 return manager }()
3 Fügen Sie durch Aufzählung die HTTP-Anfragemethode (GET/POST)
/// 枚举-请求方法 /// /// - GET: GET /// - POST: POST enum XMHTTPMethod { case GET case POST }
hinzu 4 Passen Sie die Netzwerkanforderungsmethode an und fordern Sie die vollständigen Daten über einen Abschlussrückruf an
/// 封装网络请求方法 /// /// - 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 Verwendung von Netzwerkanfrage-Tools
///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("请求失败") } })
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln zum Thema PHP chinesische Website!
Empfohlene Lektüre:
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der AFN-gekapselten Netzwerkanforderungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!