Github地址

由于Alamofire是swift网络库,所以,以下的所有介绍均基于swift项目

导入Alamofire

以下为使用cocoapods导入,其余的方式请参考官网

  1. source 'https://github.com/CocoaPods/Specs.git'
  2. platform :ios, '10.0'
  3. use_frameworks! # 这句一定不要忘了
  4. target '<Your Target Name>' do
  5. pod 'Alamofire', '~> 4.5'
  6. end

将Alamofire导入到项目中之后,在所需要用到的地方使用以下方式导入

  1. import Alamofire

创建普通接口数据请求对象(下载和上传与之类似)

  1. /// 请求的URL,需要遵循URLConvertible协议,字符串即可
  2. let requestUrl = "http://www.baidu.com"
  3. /**
  4. 网络请求可以选择的方式:
  5. public enum HTTPMethod: String {
  6. case options = "OPTIONS"
  7. case get = "GET"
  8. case head = "HEAD"
  9. case post = "POST"
  10. case put = "PUT"
  11. case patch = "PATCH"
  12. case delete = "DELETE"
  13. case trace = "TRACE"
  14. case connect = "CONNECT"
  15. }
  16. */
  17. let requestMethod: HTTPMethod = .get
  18. /// 请求的参数,[String: Any]类型的数据,可以为nil
  19. let requestParameters: Parameters? = nil
  20. /**
  21. 参数的编码方式
  22. default
  23. methodDependent /// default
  24. queryString
  25. httpBody
  26. */
  27. let requestEncoding: ParameterEncoding = URLEncoding.default
  28. /// 请求的headers,[String: String]类型,可以为nil
  29. let requestHeaders: HTTPHeaders? = nil
  30. /// 创建一个数据请求对象
  31. let dataRequest = request(requestUrl, method: requestMethod, parameters: requestParameters, encoding: requestEncoding, headers: requestHeaders)
  32. /// 取消网络请求
  33. dataRequest.cancel()
  34. /// 暂停网络请求
  35. dataRequest.suspend()
  36. /// 重新开始网络请求
  37. dataRequest.resume()

发起网络请求并拿到指定格式的数据

  1. /// 返回值为json格式
  2. dataRequest.responseJSON { (response: DataResponse) in }
  3. /// 返回的数据为json格式。在指定的线程中进行请求,并且指定数据解析时的选项
  4. dataRequest.responseJSON(queue: DispatchQueue.main, options: .mutableContainers) { (response: DataResponse) in }
  5. /// 返回值为Data格式
  6. dataRequest.responseData { (response: DataResponse) in }
  7. /// 返回值为Data格式。在指定的线程中进行请求
  8. dataRequest.responseData(queue: DispatchQueue.main) { (response: DataResponse) in }
  9. /// 返回值为String格式
  10. dataRequest.responseString { (response: DataResponse) in }
  11. /// 返回值为String格式。在指定的线程中进行请求,并且指定字符串的编码格式
  12. dataRequest.responseString(queue: DispatchQueue.main, encoding: String.Encoding.utf8) { (response: DataResponse) in }

网络状态相关

  1. /// 创建网络状态管理对象
  2. let reachabilityManager = NetworkReachabilityManager.init()
  3. /// 获取网络是否正常
  4. let isReachable = reachabilityManager?.isReachable
  5. /// 获取移动网络是否正常
  6. let isReachableOnWWAN = reachabilityManager?.isReachableOnWWAN
  7. /// 获取wifi是否正常
  8. let isReachableOnEthernetOrWiFi = reachabilityManager?.isReachableOnEthernetOrWiFi
  9. /// 设置网络监听所在的线程
  10. reachabilityManager?.listenerQueue = DispatchQueue.main
  11. /// 网络状态发生改变时的闭包回调
  12. reachabilityManager?.listener = { (state: NetworkReachabilityManager.NetworkReachabilityStatus) in }
  13. /// 启动网络状态的监听
  14. reachabilityManager?.startListening()
  15. /// 停止网络状态的监听
  16. reachabilityManager?.stopListening()

网络请求相关通知

  1. /// 当请求被取消时会发送这个通知
  2. NotificationCenter.default.addObserver(self, selector: #selector(didCancel), name: NSNotification.Name.Task.DidCancel, object: nil)
  3. /// 当请求完成是会发送这个通知
  4. NotificationCenter.default.addObserver(self, selector: #selector(didComplete), name: NSNotification.Name.Task.DidComplete, object: nil)
  5. /// 当请求继续或者重新开始的时候会发送这个通知
  6. NotificationCenter.default.addObserver(self, selector: #selector(didResume), name: NSNotification.Name.Task.DidResume, object: nil)
  7. /// 当请求被暂停时会发送这个通知
  8. NotificationCenter.default.addObserver(self, selector: #selector(didSuspend), name: NSNotification.Name.Task.DidSuspend, object: nil)

网络库Alamofire使用方法的更多相关文章

  1. 网络库Alamofire使用方法学习笔记

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

  2. Swift:网络库Alamofire

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

  3. Swift网络库Alamofire的导入

    一.手动导入 1, 官网下载 Alamofire 2, 解压下载的文件 放入工程的顶层目录下 3, 打开工程 Add Files 4, 选中项目 TARGETS > General > E ...

  4. linux curl网络库的使用方法

    struct V3MemoryStruct { char *memory; size_t size; }; static size_t WriteMemoryCallback(void *conten ...

  5. swift中第三方网络请求库Alamofire的安装与使用

    swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面 ...

  6. Alamofire网络库进阶教程

    本章节由CocoaChina翻译组成员星夜暮晨(博客)翻译自raywenderlich:Intermediate Alamofire Tutorial,敬请勘误. 欢迎回到我们的 Alamofire ...

  7. 粘包处理现象及其解决方案——基于NewLife.Net网络库的管道式帧长粘包处理方法

    [toc] #1.粘包现象 每个TCP 长连接都有自己的socket缓存buffer,默认大小是8K,可支持手动设置.粘包是TCP长连接中最常见的现象,如下图 socket缓存中有5帧(或者说5包)心 ...

  8. [原]网络库libevent在Visual Studio中的使用方法

    libevent是一个事件触发的网络库,适用于windows.linux.bsd等多种平台,内部使用select.epoll.kqueue等系统调用管理事件机制.著名分布式缓存软件memcached也 ...

  9. [教程]微信官方开源UI库-WeUI使用方法【申明:来源于网络】

    [教程]微信官方开源UI库-WeUI使用方法 [ 教程]微信官方开源UI库-WeUI使用方法 地址:http://www.weui.org.cn/?/article/1 微信公众号开发-WeUI使用说 ...

随机推荐

  1. CoordinatorLayout使用全解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012124438/article/details/56701641 CoordinatorLayo ...

  2. Struts2类数据封装

  3. AWS EC2 外网不能访问的坑

    概述 今天我在 AWS EC2 上配置并启动了 nginx,但是通过外网不能访问,查了一下资料终于解决了,记录下来供以后开发时参考,相信对其它人也有用. 外网访问不了的原因 外网访问不了的原因不外乎有 ...

  4. Spring mvc中@RequestMapping 基本用法

    @RequestMapping(value="/departments") public String simplePattern(){ System.out.println(&q ...

  5. Java模拟实现百度文档在线浏览

    Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper ...

  6. docker 的安装和镜像

    一.docker的 安装 : 第一种: yum -y install docker systemctl start docker.service systemctl status docker 第二种 ...

  7. Linux进程间通信(IPC)之信号量

    [Linux]进程间通信(IPC)之信号量详解与测试用例 2017年03月22日 17:28:50 阅读数:2255 学习环境centos6.5 Linux内核2.6 进程间通信概述 1. 进程通信机 ...

  8. “vmware 未能初始化监视器设备”的解决方法

    从挂起状态唤醒时出现"vmware 未能初始化监视器设备"的提示,在cmd中输入命令 net start vmci net start vmx86 可能还不能成功启动,提示&quo ...

  9. 利用python将excel数据解析成json格式

    利用python将excel数据解析成json格式 转成json方便项目中用post请求推送数据自定义数据,也方便测试: import xlrdimport jsonimport requests d ...

  10. 【VS开发】PCIe体系结构的组成部件

    PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备,当然PCIe总线也可以连接其他处理器系统.在不同的处理器系统中,PCIe体系结构的实现方法略有不 ...