Alamofire4 使用

最近刚转到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:"网络状况较差,请稍后")

            }

        }

    }


}

你可能感兴趣的:(Alamofire4 使用)