Maison > interface Web > js tutoriel > Explication détaillée des requêtes réseau encapsulées AFN

Explication détaillée des requêtes réseau encapsulées AFN

php中世界最好的语言
Libérer: 2018-04-16 15:43:26
original
1767 Les gens l'ont consulté

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 项目名称
Copier après la connexion

02-Initialiser les Pods

pod init
Copier après la connexion

03-Ouvrir le fichier Pods

open Podfile
Copier après la connexion

04-Modifier le fichier Pod

# 设置支持最低平台
platform :ios, '8.0'
target 'TestSwiftMixAFN' do
 # 如果是Swift项目,需添加"use_frameworks!"
 use_frameworks!
pod "AFNetworking"
end
Copier après la connexion

05-Installer les Pods

pod install
Copier après la connexion

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 {
 // ...
}
Copier après la connexion

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
 }()
Copier après la connexion

3 Par énumération, ajoutez une méthode de requête HTTP (GET/POST)

/// 枚举-请求方法
///
/// - GET: GET
/// - POST: POST
enum XMHTTPMethod {
 case GET
 case POST
}
Copier après la connexion

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)
  }
 }
Copier après la connexion

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("请求失败")
   }
  })
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal