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)
    
  • 相关阅读:
    51 Nod 1086 多重背包问题(单调队列优化)
    51 Nod 1086 多重背包问题(二进制优化)
    51 Nod 1085 01背包问题
    poj 2559 Largest Rectangle(单调栈)
    51 Nod 1089 最长回文子串(Manacher算法)
    51 Nod N的阶乘的长度 (斯特林近似)
    51 Nod 1134 最长递增子序列(经典问题回顾)
    51 Nod 1020 逆序排列
    PCA-主成分分析(Principal components analysis)
    Python中cPickle
  • 原文地址:https://www.cnblogs.com/zhanbaocheng/p/7745721.html
Copyright © 2011-2022 走看看