Maison  >  Article  >  interface Web  >  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中世界最好的语言
php中世界最好的语言original
2018-04-16 15:43:261703parcourir

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!

Déclaration:
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