zoukankan      html  css  js  c++  java
  • 网络库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)
    
  • 相关阅读:
    胡昊—第9次作业--接口及接口回调
    胡昊—第8次作业--继承
    软件工程第三次作业——关于软件质量保障初探
    胡昊—第7次作业--访问权限、对象使用
    胡昊—第6次作业—static关键字、对象
    20194670自动生成四则运算题第一版报告
    《现代软件工程—构建之法》第一章总结
    第四次博客作业-结对项目
    第9次作业--接口及接口回调
    第八次作业--继承
  • 原文地址:https://www.cnblogs.com/zhanbaocheng/p/7745721.html
Copyright © 2011-2022 走看看