Cette fois, je vais vous apporter une explication détaillée des requêtes réseau encapsulées AFN. Quelles sont les précautions pour les requêtes réseau encapsulées AFN Voici un cas pratique, jetons un coup d'oeil.
Je crois que tout le monde sait que dans un projet, nous encapsulons généralement les requêtes réseau dans un singleton pour garantir que la requête réseau Session de l'ensemble du projet est la même.
Modèle SingletonDéfinition : Une classe a une et une seule instance, et elle s'instancie pour la fournir à l'ensemble du système Je ne dirai pas grand-chose ci-dessous, jetons un œil à l'introduction détaillée.
Importer des frameworks tiers via cocoaPods
01-Passer au répertoire du projet
cd 项目名称
02-Initialiser les Pods
pod init
03-Ouvrir le fichier Pods
open Podfile
04-Modifier le fichier Pod
# 设置支持最低平台 platform :ios, '8.0' target 'TestSwiftMixAFN' do # 如果是Swift项目,需添加"use_frameworks!" use_frameworks! pod "AFNetworking" end
05-Installer les Pods
pod install
Outil de demande de réseau AFN d'encapsulation
1 Créer une classe d'outils, héritée de AFHTTPSessionManager
import AFNetworking class XMSessionManager: AFHTTPSessionManager { // ... }
2 Créer une instance AFHTTPSessionManager via un singleton
/// 创建网络请求单例 static let shared: XMSessionManager = XMSessionManager() ---------------------------------------------------------------- /// 如果需要设置请求的属性,可在闭包中添加 /// 在第一次访问时,执行闭包,并且将结果保存在 shared 常量中 static let shared1: XMSessionManager = { // 实例化对象 let manager = XMSessionManager() // 设置响应反序列化支持的数据类型 manager.responseSerializer.acceptableContentTypes?.insert("text/plain") // 返回对象 return manager }()
3 Par énumération, ajoutez une méthode de requête HTTP (GET/POST)
/// 枚举-请求方法 /// /// - GET: GET /// - POST: POST enum XMHTTPMethod { case GET case POST }
4 Personnalisez la méthode de demande de réseau et demandez les données complétées via le rappel de fermeture
/// 封装网络请求方法 /// /// - 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 Utilisation des outils de requête réseau
///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("请求失败") } })
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le. Site Web chinois PHP !
Lecture recommandée :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!