Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der AFN-gekapselten Netzwerkanforderungen

Detaillierte Erläuterung der AFN-gekapselten Netzwerkanforderungen

php中世界最好的语言
php中世界最好的语言Original
2018-04-16 15:43:261666Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn