swift3.0 URLSession网络请求工具类封装(get请求,post请求)

来源:互联网 发布:萧然问政网络 编辑:程序博客网 时间:2024/06/10 07:34

//类名: HCTool


//单例 

static let share = HCTool()


// MARK:- get请求

    func getWithPath(path:String,paras: Dictionary<String,Any>?,success:@escaping ((_ result:Any) -> ()),failure: @escaping ((_ error:Error) -> ())) {

    

        var i =0

        var address = path

        iflet 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

            

            iflet data = data {


                iflet result = try?JSONSerialization.jsonObject(with: data, options: .allowFragments){

                        

                        success(result)

                }

            }else {

                

                failure(error!)

            }

        }

        dataTask.resume()

    }



// MARK:- post请求

    func postWithPath(path:String,paras: Dictionary<String,Any>?,success:@escaping ((_ result:Any) -> ()),failure: @escaping ((_ error:Error) -> ())) {

        

        var i =0

        var address:String = ""

       

        iflet 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

            

            iflet data = data {

                

                iflet result = try?JSONSerialization.jsonObject(with: data, options: .allowFragments) {

                    

                    success(result)

                }

                

            }else {

                failure(error!)

            }

        }

        dataTask.resume()   

    }



例: get使用方法:

// MARK:- 请求Message数据

@objc fileprivatefunc loadData() {


  let path ="\(totalAddress)flzxbg_service_vmessage/vmessage/getbyuserid"

  let dict = ["userid":1]

   HCTool.share.getWithPath(path: path, paras: dict, success: { (result)in

            

            print(result)

            

            }) { (error) in


                print(error)

        }

}



1 0
原创粉丝点击