swift-Alamofire-使用

swift-Alamofire-使用,第1张

import Foundation
import Alamofire

func get(url: String, param: String, isToken: Bool = false) -> [String: Any] {
    var r: [String: Any] = [String: Any]()
    
    AF.request(url, method: .get).response(responseSerializer: DictionaryResponseSerializer()) { response in
        debugPrint("Response: \(response.result)")
        do {
            var searchDictionary = try response.result.get()
            for (key, value) in searchDictionary {
                print("key: \(key)  value: \(value)")
            }
        } catch {
            print("Unexpected error: \(error).")
        }
    }
    return r
}

func post(url: String, param: [String: String], isToken: Bool = false) -> NSDictionary {
    var r = NSDictionary()
    AF.request(url,
               method: .post,
               parameters: param,
               encoding: JSONEncoding.default,
               headers: HTTPHeaders(["authorization" : "token"])).response(responseSerializer: DictionaryResponseSerializer()) { response in
        debugPrint("Response: \(response.description)")
    }
    return r
}



public final class DictionaryResponseSerializer: ResponseSerializer {
    public func serialize(request: URLRequest?,
                          response: HTTPURLResponse?,
                          data: Data?, error: Error?) throws -> Dictionary<String, Any> {
        guard error == nil else { throw error! }

        guard let data = data, !data.isEmpty else {
            guard emptyResponseAllowed(forRequest: request, response: response) else {
                throw AFError.responseSerializationFailed(reason: .inputDataNilOrZeroLength)
            }
            return [:]
        }
        do {
            return try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.fragmentsAllowed) as! Dictionary<String, Any>
        } catch {
            throw AFError.responseSerializationFailed(reason: .jsonSerializationFailed(error: error))
        }
    }
}

func dictionaryFind(_ needle: String, searchDictionary: Dictionary<String, Any>) -> String? {

  var theNeedleDictionary = Dictionary<String, Any>()

    func recurseDictionary(_ needle: String, theDictionary: Dictionary<String, Any>) -> Dictionary<String, Any> {
      var returnValue = Dictionary<String, Any>()
      for (key, value) in theDictionary {
        if value is Dictionary<String, Any> {
          if key == needle {
            returnValue = value as! Dictionary<String, Any>
            theNeedleDictionary = returnValue
            break
          } else {
              returnValue =  recurseDictionary(needle, theDictionary: value as! Dictionary<String, Any>)
            }
        }
     }
     return returnValue
    }
  // Result not used
  _ = recurseDictionary(needle, theDictionary: searchDictionary)

  if let value = theNeedleDictionary["value"] as? String {
    return value
  }
  return nil
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/994473.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存