网络库Alamofire使用方法学习笔记
由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目
导入Alamofire
以下为使用cocoapods导入,其余的方式请参考官网
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks! # 这句一定不要忘了
target '<Your Target Name>' do
pod 'Alamofire', '~> 4.5'
end
将Alamofire导入到项目中之后,在所需要用到的地方使用以下方式导入
import Alamofire
创建普通接口数据请求对象(下载和上传与之类似)
/// 请求的URL,需要遵循URLConvertible协议,字符串即可
let requestUrl = "http://www.baidu.com"
/**
网络请求可以选择的方式:
public enum HTTPMethod: String {
case options = "OPTIONS"
case get = "GET"
case head = "HEAD"
case post = "POST"
case put = "PUT"
case patch = "PATCH"
case delete = "DELETE"
case trace = "TRACE"
case connect = "CONNECT"
}
*/
let requestMethod: HTTPMethod = .get
/// 请求的参数,[String: Any]类型的数据,可以为nil
let requestParameters: Parameters? = nil
/**
参数的编码方式
default
methodDependent /// default
queryString
httpBody
*/
let requestEncoding: ParameterEncoding = URLEncoding.default
/// 请求的headers,[String: String]类型,可以为nil
let requestHeaders: HTTPHeaders? = nil
/// 创建一个数据请求对象
let dataRequest = request(requestUrl, method: requestMethod, parameters: requestParameters, encoding: requestEncoding, headers: requestHeaders)
/// 取消网络请求
dataRequest.cancel()
/// 暂停网络请求
dataRequest.suspend()
/// 重新开始网络请求
dataRequest.resume()
发起网络请求并拿到指定格式的数据
/// 返回值为json格式
dataRequest.responseJSON { (response: DataResponse) in }
/// 返回的数据为json格式。在指定的线程中进行请求,并且指定数据解析时的选项
dataRequest.responseJSON(queue: DispatchQueue.main, options: .mutableContainers) { (response: DataResponse) in }
/// 返回值为Data格式
dataRequest.responseData { (response: DataResponse) in }
/// 返回值为Data格式。在指定的线程中进行请求
dataRequest.responseData(queue: DispatchQueue.main) { (response: DataResponse) in }
/// 返回值为String格式
dataRequest.responseString { (response: DataResponse) in }
/// 返回值为String格式。在指定的线程中进行请求,并且指定字符串的编码格式
dataRequest.responseString(queue: DispatchQueue.main, encoding: String.Encoding.utf8) { (response: DataResponse) in }
网络状态相关
/// 创建网络状态管理对象
let reachabilityManager = NetworkReachabilityManager.init()
/// 获取网络是否正常
let isReachable = reachabilityManager?.isReachable
/// 获取移动网络是否正常
let isReachableOnWWAN = reachabilityManager?.isReachableOnWWAN
/// 获取wifi是否正常
let isReachableOnEthernetOrWiFi = reachabilityManager?.isReachableOnEthernetOrWiFi
/// 设置网络监听所在的线程
reachabilityManager?.listenerQueue = DispatchQueue.main
/// 网络状态发生改变时的闭包回调
reachabilityManager?.listener = { (state: NetworkReachabilityManager.NetworkReachabilityStatus) in }
/// 启动网络状态的监听
reachabilityManager?.startListening()
/// 停止网络状态的监听
reachabilityManager?.stopListening()
网络请求相关通知
/// 当请求被取消时会发送这个通知
NotificationCenter.default.addObserver(self, selector: #selector(didCancel), name: NSNotification.Name.Task.DidCancel, object: nil)
/// 当请求完成是会发送这个通知
NotificationCenter.default.addObserver(self, selector: #selector(didComplete), name: NSNotification.Name.Task.DidComplete, object: nil)
/// 当请求继续或者重新开始的时候会发送这个通知
NotificationCenter.default.addObserver(self, selector: #selector(didResume), name: NSNotification.Name.Task.DidResume, object: nil)
/// 当请求被暂停时会发送这个通知
NotificationCenter.default.addObserver(self, selector: #selector(didSuspend), name: NSNotification.Name.Task.DidSuspend, object: nil)
网络库Alamofire使用方法学习笔记的更多相关文章
- Mudo C++网络库第六章学习笔记
muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并 ...
- Mudo C++网络库第十一章学习笔记
反思C++面向对象与虚函数 C++语言学习可以看<C++ Primer>这本书; 在C++中进行面向对象编程会遇到其他语言中不存在的问题, 其本质原因是C++ class是值语义, 而非对 ...
- Mudo C++网络库第四章学习笔记
C++多线程系统编程精要 学习多线程编程面临的最大思维方式的转变有两点: 当前线程可能被切换出去, 或者说被抢占(preempt)了; 多线程程序中事件的发生顺序不再有全局统一的先后关系; 当线程被切 ...
- Mudo C++网络库第三章学习笔记
多线程服务器的适用场合与常用编程模型 进程间通信与线程同步; 以最简单规范的方式开发功能正确.线程安全的多线程程序; 多线程服务器是指运行在linux操作系统上的独占式网络应用程序; 不考虑分布式存储 ...
- 网络库Alamofire使用方法
Github地址 由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目 导入Alamofire 以下为使用cocoapods导入,其余的方式请参考官网 source 'h ...
- Mudo C++网络库第七章学习笔记
muduo编程示例 muduo库是设计来开发内网的网络程序, 它没有做任何安全方面的加强措施, 如果在公网上可能会受到攻击; muduo库把主动关闭连接这件事分成两步来做: 如果主动关闭连接, 会先关 ...
- Mudo C++网络库第五章学习笔记
高效的多线程日志 日志(logging)有两个意思: 诊断日志(diagnostic log), 常用日志库提供日志功能; 交易日志(transaction log), 用于记录状态变更, 通过回放日 ...
- Swift:网络库Alamofire
一,Alamofire的说明与配置 1,什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetworking 是 iOS 和 OS X 上很受欢迎的第三方H ...
- zepto.1.1.6.js源码中的each方法学习笔记
each方法接受要遍历的对象和对应的回调函数作为参数,它的作用是: 1.如果要遍历的对象是类似数组的形式(以该对象的length属性值的类型是否为number类型来判断),那么就把以要遍历的对象为执行 ...
随机推荐
- 如何在CentOS上安装一个2048小游戏
如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...
- Spring Boot Maven Plugin(一):repackage目标
简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...
- Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
Hibernate连接池 Hibernate自带了连接池,但是呢,该连接池比较简单..而Hibernate又对C3P0这个连接池支持-因此我们来更换Hibernate连接池为C3P0 查看Hibern ...
- python实例编写(4)--js,滚动条,cookie,验证码,获取特定属性的元素,实现原理
一.调用js 执行方法:execute_script(script,*args) 场景一:在页面上直接执行调用js 场景二:在定位的某个元素上执行调用js 如:掩藏文字(提示插件 tooltip设置淡 ...
- C#调用AForge实现摄像头录像
1: 首先下载库文件>> 也可以去官网寻找>> 下载本教程全代码>> 输出为MP4需要用到ffmpeg相关的文件,我打包的库已经带了,去官网找的库可以在这个目录找到 ...
- day12<常见对象+>
常见对象(Scanner的概述和方法介绍) 常见对象(Scanner获取数据出现的小问题及解决方案) 常见对象(String类的概述) 常见对象(String类的构造方法) 常见对象(String类的 ...
- CSV导出大量数据
$csvname = $csvname . '.csv'; header('Content-Type: application/vnd.ms-excel;charset=GB2312'); heade ...
- Kindle 推送教程:教你用电子邮箱推送电子书
Kindle 推送是什么意思?如何通过电子邮件附件推送?或许刚刚接触 Kindle 的朋友对这个概念不是很清楚,其实所谓 Kindle 推送是指亚马逊提供的一个"Kindle 个人文档服务& ...
- 关于js浮点数计算精度不准确问题的解决办法
今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一直碰到这个问题,都是简单的使用tofixed方法进行处理一下,这对于一个程序员来说是及其不严谨的.因此在网上收集了一些处理浮点数精 ...
- JSP入门3 Servlet
需要继承类HttpServlet 服务器在获得请求的时候会先根据jsp页面生成一个java文件,然后使用jdk的编译器将此文件编译,最后运行得到的class文件处理用户的请求返回响应.如果再有请求访问 ...