Swift-利用AFN封装网络请求
来源:互联网 发布:中国宏观数据库 编辑:程序博客网 时间:2024/06/05 20:51
一般在一个项目中,网络请求都封装成一个单例,以确保整个项目的网络请求 Session 是同一个.
单例模式定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供.
通过cocoaPods 导入第三方框架
01-切换到项目目录
cd 项目名称
02-初始化Pods
pod init
03-打开 Pods 文件
open Podfile
04-编辑 Podfile
# 设置支持最低平台platform :ios, '8.0'target 'TestSwiftMixAFN' do # 如果是Swift项目,需添加"use_frameworks!" use_frameworks!pod "AFNetworking"end
05-安装 Pods
pod install
封装AFN网络请求工具
1 创建一个工具类, 继承自 AFHTTPSessionManager
import AFNetworkingclass 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: POSTenum 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("请求失败") } })
0 0
- Swift-利用AFN封装网络请求
- OC和Swift的AFN网络封装
- swift网络请求封装
- ios-Swift中封装AFN中的GET和POST请求
- 封装AFN请求
- iOS AFN 封装POST网络请求(AFURLSessionManager)
- iOS - 利用AFN检测网络状态的类封装
- Swift之网络请求框架封装
- Swift版的网络请求封装
- swift 面向协议的网络请求封装
- iOS AFN监听网络,封装网络请求 —— HERO博客
- AFN 3.0 网络请求使用
- 利用block封装网络请求类
- AFN网络请求封装(MRC模式, 若是ARC模式 需添加 -fno-objc-arc )
- iOS AFN 封装POST网络请求(AFURLSessionManager) (续一) upload表单提交方法
- iOS AFN 封装POST网络请求(AFURLSessionManager) (续二) download下载方法
- 利用AFN实时监测网络状态以及设置请求超时时间
- Swift网络请求于数据解析简单封装
- webservice 入门学习(二)
- iOS图片设置圆角性能优化
- java中另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- velocity页面上使用自定义标签
- Runtime Method Swizzling开发实例汇总
- Swift-利用AFN封装网络请求
- ES6 Promise 浅析
- wifi无线破解之跑pin最详细教程 2017
- linux sed命令详解
- TinyProxy 安装 (不需要证书支持https)
- BZOJ4346 [POI2016]Nadajniki
- angular directive 不生效
- jsp自定义标签
- web.config配置详细说明