>  기사  >  웹 프론트엔드  >  AFN 캡슐화된 네트워크 요청에 대한 자세한 설명

AFN 캡슐화된 네트워크 요청에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-04-16 15:43:261666검색

이번에는 AFN 캡슐화 네트워크 요청에 대한 자세한 설명을 가져왔습니다. AFN 캡슐화 네트워크 요청의 주의 사항은 무엇인가요?

프로젝트에서는 일반적으로 전체 프로젝트의 네트워크 요청 Session이 동일하도록 하기 위해 네트워크 요청을 싱글톤으로 캡슐화한다는 것을 모두가 알고 있다고 믿습니다.

단일 케이스 패턴정의: 클래스는 단 하나의 인스턴스를 가지며, 인스턴스화하여 전체 시스템에 제공합니다. 아래에서는 더 자세히 설명하지 않겠습니다. 자세한 소개를 살펴보겠습니다.

cocoaPods

를 통해 타사 프레임워크 가져오기 01-프로젝트 디렉토리로 전환

cd 项目名称

02-포드 초기화

pod init

03-Pod 파일 열기

open Podfile

04-Podfile 편집

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

05-Pod 설치

pod install

캡슐화된 AFN 네트워크 요청 도구

1 AFHTTPSessionManager

import AFNetworking
class XMSessionManager: AFHTTPSessionManager {
 // ...
}

에서 상속된 도구 클래스를 만듭니다. 2 싱글톤을 통해 AFHTTPSessionManager 인스턴스 생성

/// 创建网络请求单例
static let shared: XMSessionManager = XMSessionManager()
----------------------------------------------------------------
/// 如果需要设置请求的属性,可在闭包中添加
/// 在第一次访问时,执行闭包,并且将结果保存在 shared 常量中
 static let shared1: XMSessionManager = {
  // 实例化对象
  let manager = XMSessionManager()
  // 设置响应反序列化支持的数据类型
  manager.responseSerializer.acceptableContentTypes?.insert("text/plain")
  // 返回对象
  return manager
 }()

3 열거를 통해 HTTP 요청 메소드(GET/POST)

/// 枚举-请求方法
///
/// - GET: GET
/// - POST: POST
enum XMHTTPMethod {
 case GET
 case POST
}

를 추가합니다. 4 네트워크 요청 방법을 맞춤화하고 클로저 콜백을 통해 완성된 데이터를 요청

/// 封装网络请求方法
 ///
 /// - 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 네트워크 요청 도구 사용

///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("请求失败")
   }
  })

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 믿습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:



위 내용은 AFN 캡슐화된 네트워크 요청에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.