最近因为新手自学iOS Swift,然后写了一套聚合SDK,对网络请求那块第三方框架暂时不是很懂,也没有去深入研究他们(alfire跟moya),所以后面就选用了原生的URLSession,所以对他封装了成为一个方法,直接调用使用!
1. /// MARK:- 聚合SDK GET请求(带参数)
class func antUEGET(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) {
var i = 0
var address = path
if let paras = paras {
for (key,value) in paras {
if i == 0 {
address += "?\(key)=\(value)"
}else {
address += "&\(key)=\(value)"
}
i += 1
}
}
let url = URL(string: address.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!)
let session = URLSession.shared
let dataTask = session.dataTask(with: url!) { (data, respond, error) in
if let data = data {
if let result = try? JSONSerialization.jsonObject(with: data, options: .allowFragments){
success(result)
}
}else {
failure(error!)
}
}
dataTask.resume()
}
2. // MARK:- 聚合SDK post请求
class func antUEPOST(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) {
var i = 0
var address: String = ""
if let paras = paras {
for (key,value) in paras {
if i == 0 {
address += "\(key)=\(value)"
}else {
address += "&\(key)=\(value)"
}
i += 1
}
}
let url = URL(string: path)
var request = URLRequest.init(url: url!)
request.httpMethod = "POST"
print(address)
request.httpBody = address.data(using: .utf8)
let session = URLSession.shared
let dataTask = session.dataTask(with: request) { (data, respond, error) in
if let data = data {
if let result = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) {
success(result)
}
}else {
failure(error!)
}
}
dataTask.resume()
}
其他问题可以佳窝魏鑫互相学习iOS技术探讨:lixiaowu1129 一起对iOS技术更深入学习
网友评论