ios swift 打造自己的http請求工具

來源:互聯網
上載者:User

標籤:sum   body   成長之路   cas   出錯   ble   任務   開始   get   

在ios開發中,網路請求是不可以少的,說到網路請求可能用的最多的就是第三方的比人比較有名的AFNetworking、Alamofire等,原生的用的少。今天就用ios提供的原生方法來打造屬於自己的一個網路請求工具吧。大神的成長之路,現在就開始起航。

第一步:先建一個類比如叫 Http 如下:

 //定義請求類型

enum HttpMethod {

    case GET,

            POST

}

//在http中定義類方法來做請求,方便使用

class Http {

    class func request(method:HttpMethod, url:String,params:[String:Any]=[:],complete: @escaping(_result:String)->Void,error:@escaping(_error:Error?)->Void){

        var url = url

        //處理參數為了方便這裡抽取裡一個方法來處理參數

    let param =self.parserParams(params: params)

        //設定get請求參數

        ifmethod == .GET&&param != ""{

            url.append("?\(param)")

        }

        let_url =URL(string: url)!

        let request =NSMutableURLRequest(url: _url)

     //設定逾時時間

        request.timeoutInterval=50

       //佈建要求方式

        request.httpMethod= method == .GET?"GET":"POST"

         //設定post請求參數

        if method == .POST&& param != ""{

            request.httpBody=param.data(using: .utf8)

        }

        let session =URLSession.shared

        let httpTask = session.dataTask(with: request as URLRequest) { (data,response ,err ) in

            //在主線程中回調方便在介面處理資料邏輯

            OperationQueue.main.addOperation {

            if err !=nil{

            //錯誤回調

                error(err)

              return

            }

          //請求成功將結果返回

            complete(String(data: data!, encoding:String.Encoding.utf8)!)

           }

        }

        //啟動任務

        httpTask.resume()

    }

    //將字典轉換成網路請求的參數字串

    private class func parserParams(params:[String:Any])->String{

        var newStr=""

        for param in params{

         newStr.append("\(param.key)=\(param.value)&")

        }

          return newStr

    }

}

第二步開始測試:在viewcontroller中調用,

class ViewController:UIViewController{

    override func viewDidLoad() {

        super.viewDidLoad()

         let url = "http://api.budejie.com/api/api_open.php"

        Http.request(method: .GET, url: url, params: ["a":"list","c":"data","type":1], complete: {r in

            print("請求結果:",r)

        }, error:{error in

            print("請求出錯了:",error.debugDescription)

        })

 

至此就這個簡單的http請求工具就寫好了,是不是很簡單呢? 如果覺得可以記得關注我哦,如果有什麼問題歡迎留言!

簡書地址: Code人生 歡迎關注

 

ios swift 打造自己的http請求工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.