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. Python-老男孩-03_socket

    Socket简介: 所谓Socket也称"套接字",用于描述IP和端口,是一个通信链的句柄,应用程序通过"套接字"向网络发出请求或应答网络请求. Socket起 ...

  2. webservice05#soap消息

    1, SOAPMessage结构图 2, SOAP消息的创建 1>前面的一个简单WebService  服务 package com.yangw.soap.service; import jav ...

  3. 随便讲讲我对于svn和git的想法

    1.SVN是集中式版本管理工具,而Git是分布式版本管理工具,这是核心区别. 二者都有集中的库,只是git偏向于分布式,用户可以再自己电脑上克隆一份自己的库,即使在断网的情况下也能够查看版本,创建分支 ...

  4. Qt--自定义View

    这是上一篇文章的续篇,关于自定义View. 多个View内部可以映射到同一个数据模型,也可以映射不同的数据结构:可以使用所有数据,也可以只使用部分数据.因为视图层与数据层的分离,操作相对比较灵活. 1 ...

  5. wget下载整个网站

    wget下载整个网站wget下载整个网站可以使用下面的命令 wget -r -p -k -np http://hi.baidu.com/phps , -r 表示递归下载,会下载所有的链接,不过要注意的 ...

  6. 我的Spring学习记录(三)

    学习了AOP之后就可以应用一下了,所以这次我们了解一下Spring的声明式事务. 事务在我们的很多方面都可以体现,就拿我们平时的买卖活动,或者是银行的转账来说,这些活动要么是成功,要么是失败,比如:张 ...

  7. 翻译 | 关键CSS和Webpack: 减少阻塞渲染的CSS的自动化解决方案

    原文地址: Critical CSS and Webpack: Automatically Minimize Render-Blocking CSS 原文作者: Anthony Gore 译者: 蜗牛 ...

  8. ASP.NET没有魔法——为什么使用ASP.NET

    ASP.NET是什么? ASP.NET是一个使用HTML.CSS.Javascript来构建动态网站或者网站应用程序的Web框架,并且也可以使用它来构建web API和实时通信技术如web soket ...

  9. android中跨线程向控件传值的问题

    activity.oncreate(bundle savedinstancestate)中创建一个handler类的实例, 在这个handler实例的handlemessage回调函数中调用更新界面显 ...

  10. python的urlparse

    urlparse主要是URL的分解和拼接,分析出URL中的各项参数,可以被其他的URL使用. 主要的函数有: 1.urlparse 将URL分解为6个片段,返回一个元组,包括协议.基地址.相对地址等等 ...