Swift学习记录 - Alamofire 4.0.1网络库基本使用(持续更新...)
来源:互联网 发布:二叉树的反转Java 编辑:程序博客网 时间:2024/06/05 16:49
目前为止 , Alamofire网络库已经更新到4.0.1 , swift也逐渐趋于稳定 , 最近有空都是在学习swift方面的东西 . 这里主要写一些项目中 , 比较实用的网络请求 , 比较少用的 和最基础的就不写啦 …
大概请求参数介绍 :
requestHeader : 请求头
parameters : 传递参数
method : 请求类型
URL : 请求地址
encoding : 编码
responseJSON : 期待解析的数据类型 , 通常咱们用到的就是JSON数据 , 其他类型暂不介绍
response : 返回数据 可以自定义设置回调的线程, 默认主线程 , 和JSON解析相关的设置 , 这个百度即可.
//这是一个参数比较完整的GET请求 , 但是实质上 , 有几个参数我们是比较少用到的. let requestHeader:HTTPHeaders = ["Range":"1-3"]; let para = ["userName":"coderMy", "password":"12345"]; let mainQueue = DispatchQueue.main; Alamofire.request("https://www.baidu.com", method: .get, parameters: para, encoding: URLEncoding.default, headers: requestHeader).responseJSON(queue:mainQueue, options: .allowFragments) { (response) in print(response) }
上述的request()的参数 , 为自选
也就是说平时用得比较多的 ,
GET 请求
//method可省略 , 默认请求方式为GET Alamofire.request("https://www.baidu.com", method: .get).responseJSON { (response) in Print("---------------------------\(response)") }
POST请求
let para = ["userName":"coderMy", "password":"12345"]; Alamofire.request("https://www.baidu.com/login", method: .post, parameters: para).responseJSON { (response) in print(response) }
设置请求头
添加请求头 , 有的时候我们会和服务器协商使用请求头 , 来保证我数据的可靠性或者使用请求头传递一些信息 , 比如我要请求什么数据等等 ..
let para = ["userName":"coderMy", "password":"12345"]; //请求头 let requestHeader:HTTPHeaders = ["Range":"1-3", "Content-Type":"allication/json"]; //将requestHeader 添加进request参数中 Alamofire.request("https://www.baidu.com", method: .post, parameters: para, headers: requestHeader).responseJSON { (response) in print(response) }
设置请求超时时间 (请求的另一种方式 , 如不设置超时时间 , 和上述GET,POST请求效果一致)
Alamofire的默认超时时间为30S ,如果我们想要更短或者更长 , 则需要自己设置 . 而这种请求方式和上述的写法有些许改变 , 和AFNetworking更相似 . 值得注意的是 , manager一定要对其强引用 , 就跟OC的一样 , 如果不设置成属性 , 则通常会报 code = -999
//设置manager属性 (重要)var manger:SessionManager? = nil//配置 , 通常默认即可 let config:URLSessionConfiguration = URLSessionConfiguration.default //设置超时时间为15S config.timeoutIntervalForRequest = 15 //根据config创建manager manger = SessionManager(configuration: config) //这里和上述大致相同 manger?.request("https://www.baidu.com", method: .get).response { (response) in print("-----------------\(response)") }
Alamofire请求返回结果状态判断
有时候 , 比如我们访问一个服务器 , 访问成功 ,但是却没有得到我们想得到的结果 , 比如本应返回JSON数据 , 却返回了意料之外的数据 , 但是code 依然为 200 . 这时候就需要 validate 来帮我们更加细化的处理这些事了 . 这里我们还是以 Alamofire.request 这种请求方式来书写 , 使用manager 写法 , 参照上述超时写法即可 …
validate 返回状态验证 , 分两种 , 手动验证 和 自动验证 .
1 . 手动验证
此时假如我们需要的结果是: 状态码在200 -300之间 , 返回的数据为JSON类型 , 代码如下
// 第一个validate验证访问状态 第二个validate 验证返回数据类型 Alamofire.request("https://www.baidu.com", method: .get) .validate(statusCode:200..<300) .validate(contentType: ["application/json"]) .responseJSON { (response) in switch response.result { //访问成功,且数据是我们想要的类型 case .success: print("--------------------是我想要的结果") //访问失败 , 状态码不对或者数据类型不对 case .failure: print("xxxxxxxxxxxxxxxxxxx\(response.result.error.debugDescription)") print("--------------------不是我想要的结果") } }
这里 , 我们访问的是百度的地址 , 然后返回的类型为 test/html , 而我们需要的是JSON . 打印错误信息 , 控制台输出如下
2 . 自动验证
1 . 不设置请求头自动验证 :
如果不设置请求头进行自动验证 , 则只会自动判断返回code是否在200…299之间 , 并不会加以判断返回的数据类型 , 如下
Alamofire.request("https://www.baidu.com",method:.get) .validate().response { (response) in print("-----------------------\(response.error?.localizedDescription)"); }
输出错误为空 , 说明验证通过
2 . 设置请求头 , 进行自动验证
//设置请求头 ,接收类型为json数据 let headers:HTTPHeaders = ["Accept": "application/json"] Alamofire.request("https://www.baidu.com",method:.get ,headers:headers) .validate().response { (response) in print("-----------------------\(response.error?.localizedDescription)"); }
此时 , 错误有值 , 控制台打印如下 :
返回数据类型 ,与要求接收数据类型不一致 , 故自动判断错误
- Swift学习记录 - Alamofire 4.0.1网络库基本使用(持续更新...)
- Swift网络库Alamofire
- Alamofire-Swift Networking网络库
- Alamofire-Swift Networking网络库
- Alamofire-Swift Networking网络库
- Swift网络请求库Alamofire
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求(一)
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求
- Swift网络库Alamofire的导入
- [iOS]Swift-Alamofire 4.0 使用初探
- Swift学习(持续更新)
- swift学习笔记~持续更新
- Swift 使用CocoaPods 导入第三方网络库--Alamofire
- 用opencv封装的opencv_haartraining.exe训练分类器
- App优化之ANR详解
- PowerManagerService 关于WackLock 休眠过程
- __block
- redhat6.0 安装G++
- Swift学习记录 - Alamofire 4.0.1网络库基本使用(持续更新...)
- TextRank 提取关键字、提取关键短语、提取摘要
- Ubuntu 中创建SWAP交换分区文件
- Servlet3.0中Servlet的使用
- RelativeLayout
- Android是如何管理App内存的--Android内存优化第二弹
- 一道面试题
- 关于理解middlebury提供的立体匹配代码后的精减
- android SQLite 数据存储