Github地址

由于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使用方法学习笔记的更多相关文章

  1. Mudo C++网络库第六章学习笔记

    muduo网络库简介 高级语言(Java, Python等)的Sockects库并没有对Sockects API提供更高层的封装, 直接用它编写程序很容易掉到陷阱中: 网络库的价值还在于能方便地处理并 ...

  2. Mudo C++网络库第十一章学习笔记

    反思C++面向对象与虚函数 C++语言学习可以看<C++ Primer>这本书; 在C++中进行面向对象编程会遇到其他语言中不存在的问题, 其本质原因是C++ class是值语义, 而非对 ...

  3. Mudo C++网络库第四章学习笔记

    C++多线程系统编程精要 学习多线程编程面临的最大思维方式的转变有两点: 当前线程可能被切换出去, 或者说被抢占(preempt)了; 多线程程序中事件的发生顺序不再有全局统一的先后关系; 当线程被切 ...

  4. Mudo C++网络库第三章学习笔记

    多线程服务器的适用场合与常用编程模型 进程间通信与线程同步; 以最简单规范的方式开发功能正确.线程安全的多线程程序; 多线程服务器是指运行在linux操作系统上的独占式网络应用程序; 不考虑分布式存储 ...

  5. 网络库Alamofire使用方法

    Github地址 由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目 导入Alamofire 以下为使用cocoapods导入,其余的方式请参考官网 source 'h ...

  6. Mudo C++网络库第七章学习笔记

    muduo编程示例 muduo库是设计来开发内网的网络程序, 它没有做任何安全方面的加强措施, 如果在公网上可能会受到攻击; muduo库把主动关闭连接这件事分成两步来做: 如果主动关闭连接, 会先关 ...

  7. Mudo C++网络库第五章学习笔记

    高效的多线程日志 日志(logging)有两个意思: 诊断日志(diagnostic log), 常用日志库提供日志功能; 交易日志(transaction log), 用于记录状态变更, 通过回放日 ...

  8. Swift:网络库Alamofire

    一,Alamofire的说明与配置 1,什么是Alamofire (1)Alamofire 的前身是 AFNetworking.AFNetworking 是 iOS 和 OS X 上很受欢迎的第三方H ...

  9. zepto.1.1.6.js源码中的each方法学习笔记

    each方法接受要遍历的对象和对应的回调函数作为参数,它的作用是: 1.如果要遍历的对象是类似数组的形式(以该对象的length属性值的类型是否为number类型来判断),那么就把以要遍历的对象为执行 ...

随机推荐

  1. 模拟实现一个ATM+购物商城程序

    记得上次小编上传了一个购物车程序,这次呢稍微复杂一点,还是那句话,上传在这里不是为了炫耀什么,只是督促小编学习,如果大神有什么意见和建议,欢迎指导.(PS:本次主要参考学习为主,自己原创的很少) 要求 ...

  2. 框架应用:Spring framework (三) - JDBC支持

    Spring框架是一个一站式的框架,也就是对很多技术和框架做了封装,使其应用更加简便. JDBC的代码过程 /STEP 1. Import required packages import java. ...

  3. echo和print的区别

    1.echo可以同时输出多个字符串: echo 'this',' string',' is'," hello world\n"; 2.print有返回值,但是运行速度上echo比较 ...

  4. vector 向量容器用法祥解

    vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法:         ...

  5. spring web.xml配置

    <!--推荐使用此种方式-->  <listener> <listener-class> org.springframework.web.context.Conte ...

  6. css3动画:弹出式菜单

    css3动画:弹出式菜单 今天主要来讲讲transition和transform结合做的动画,会举一些现在(2017年)常见的动画例子. 注:本人也接触css3不久,如果写的有纰漏请指出,不喜勿喷. ...

  7. python 的日志logging模块学习

    1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info messa ...

  8. JS封装运动框架(另一种写法)

    function animate(obj, json, interval, sp, fn) { clearInterval(obj.timer); //var k = 0; //var j = 0; ...

  9. 关于http与https区别

    http与https: http叫超文本传输协议,信息为明文传输.https是具有安全性的传输协议,是由http+ssl层,需要到ca申请证书,一般需要费用.信息为加密传输,需要验证用户身份.二者的端 ...

  10. javascript字典数据结构Dictionary实现

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...