最近刚转到swift,网络请求选择了Alamofire,pods引入:pod 'Alamofire', '~> 4.5.1'
直接代码:
Alamofire.request("url", method:HTTPMethod.post, parameters:["key":"value"], encoding:URLEncoding.default, headers: nil).responseJSON{ (response)in
//headers默认:"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
}
封装后的
func netRequestWithGet(alertShow:Bool, success:((_success:Any)->()), failure:((_error :Error) ->())) {
Alamofire.request("你的url(字符串格式的)", method:HTTPMethod.post, parameters:["key":"value"], encoding:URLEncoding.default, headers: nil).responseJSON{ (response)in
if response.result.isSuccess {
print("success")
} else {
print("failure")
}
}
}
自定义session及忽略服务器证书
import UIKit
importAlamofire
varsessionManagers:Alamofire.SessionManager!//自定义session
classAlamofireDemo:NSObject{
funcnetRequsetWihtPost(success:@escaping((_responseObject: [String:AnyObject])->()), failure:@escaping((_error:Error) ->())) {
// let myManager = SessionManager.default
// myManager.delegate.sessionDidReceiveChallenge = { session, challenge in
// return (URLSession.AuthChallengeDisposition.useCredential,URLCredential(trust:challenge.protectionSpace.serverTrust!))
// }
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 15.0
sessionManagers= Alamofire.SessionManager(configuration: configuration)
sessionManagers.delegate.sessionDidReceiveChallenge = { session, challenge in
return (URLSession.AuthChallengeDisposition.useCredential,URLCredential(trust:challenge.protectionSpace.serverTrust!))//允许非法证书
}
sessionManagers.request("url", method:HTTPMethod.post, parameters:nil, encoding:URLEncoding.default, headers:nil).responseJSON{ (response)in
// }
// Alamofire.request(self.appendModule(), method: HTTPMethod.post, parameters: parameter, encoding: URLEncoding.default, headers: nil).responseJSON { (response) in
switchresponse.result{
case.success:
ifletvalue = response.result.valueas? [String:AnyObject] {
ifvalue["code"]as?String=="True"{
if((value["result"]as? [String:AnyObject]) !=nil) {
success(value["result"]as! [String:AnyObject])
}elseif((value["result"]as? [[String:AnyObject]]) !=nil) {
success(["data":value["result"]]as[String:AnyObject])
}else{
success(["data":trueasAnyObject])
}
}else{
ifvalue["msg"] !=nil&& (value["msg"]as!String).count!=0{
failure(NSError.init(domain: value["msg"]as!String, code:0, userInfo:nil))
}else{
failure(NSError.init(domain:"请求失败", code:0, userInfo:nil))
UtilitiesTools.shared().showPromptMessage(message:"网络状况较差,请稍后")
}
}
}
case.failure:
failure(response.error!)
UtilitiesTools.shared().showPromptMessage(message:"网络状况较差,请稍后")
}
}
}
}
网友评论