网络库Alamofire使用方法

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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,374评论 4 61
  • 苏武知道他是北海牧羊的忠贞,后来则是因为一首《留别妻》。第一句很出名,结发为夫妻,恩爱两不疑。 从来不知道这样一个...
    君清兮阅读 1,630评论 0 1
  • 伫立霜秋不自哀,西风未遣菊花回。 东篱折桂留人醉,鸿雁横空托锦来。 昨日含辛依夜月,今朝载誉上金台。 小闲莫话春虚...
    尘埃落定1阅读 3,633评论 14 15
  • 俗话说,一方水土养一方人,反过来,一方人适应一方水土。水土换了,总可能会有些不适。 婷是我的一个大学同学,...
    阿译长官阅读 2,635评论 0 0
  • 感觉像是一对母女,她们打破了隔膜,能够没有尴尬舒服的抱在一起,很温暖的感觉,希望我和我妈也能这样子,但是觉得很难跟...
    储晴whj阅读 1,598评论 0 0

友情链接更多精彩内容