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

在ios開發(fā)中亲轨,網(wǎng)絡(luò)請求是不可以少的醇坝,說到網(wǎng)絡(luò)請求可能用的最多的就是第三方的比人比較有名的AFNetworking扰柠、Alamofire等牡整,原生的用的少。今天就用ios提供的原生方法來打造屬于自己的一個網(wǎng)絡(luò)請求工具吧溺拱。大神的成長之路逃贝,現(xiàn)在就開始起航。

第一步:先建一個類比如叫 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

? ? ? ? //處理參數(shù)為了方便這里抽取里一個方法來處理參數(shù)

? ? let param =self.parserParams(params: params)

? ? ? ? //設(shè)置get請求參數(shù)

? ? ? ? ?if method == .GET&&param !=""{

? ? ? ? ? ?if url.contains("?"){

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

? ? ? ? ? ? }else{

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

? ? ? ? ? ? }

? ? ? ? }

? ? // 注意這里需要將含有中文的參數(shù)進(jìn)行編碼處理沐扳,否則創(chuàng)建URL 對象就會返回nil。

? ? ? url = url.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!

? ? ? ? let_url =URL(string: url)!

? ? ? ? let request =NSMutableURLRequest(url: _url)

? ? ?//設(shè)置超時時間

? ? ? ? request.timeoutInterval=50

? ? ? ?//設(shè)置請求方式

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

?? ? ? ? //設(shè)置post請求參數(shù)

? ? ? ? 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

? ? ? ? ? ? //在主線程中回調(diào)方便在界面處理數(shù)據(jù)邏輯

? ? ? ? ? ? OperationQueue.main.addOperation {

? ? ? ? ? ? if err !=nil{

? ? ? ? ? ? //錯誤回調(diào)

? ? ? ? ? ? ? ? error(err)

? ? ? ? ? ? ? return

? ? ? ? ? ? }

? ? ? ? ? //請求成功將結(jié)果返回

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

? ? ? ? ? ?}

? ? ? ? }

? ? ? ? //啟動任務(wù)

? ? ? ? httpTask.resume()

? ? }

? ? //將字典轉(zhuǎn)換成網(wǎng)絡(luò)請求的參數(shù)字符串

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

? ? ? ? var newStr=""

? ? ? ? for param in params{

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

? ? ? ? }

? ? ? ? ? return newStr

? ? }

}

第二步開始測試:在viewcontroller中調(diào)用,

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("請求結(jié)果:",r)

? ? ? ? }, error:{error in

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

? ? ? ? })

至此就這個簡單的http請求工具就寫好了句占,是不是很簡單呢? 如果覺得可以記得關(guān)注我哦沪摄,如果有什么問題歡迎留言!

博客園地址:??猿哥愛碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市杨拐,隨后出現(xiàn)的幾起案子祈餐,更是在濱河造成了極大的恐慌,老刑警劉巖哄陶,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帆阳,死亡現(xiàn)場離奇詭異,居然都是意外死亡屋吨,警方通過查閱死者的電腦和手機(jī)蜒谤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來至扰,“玉大人鳍徽,你說我怎么就攤上這事「铱危” “怎么了阶祭?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翎猛。 經(jīng)常有香客問我胖翰,道長,這世上最難降的妖魔是什么切厘? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任萨咳,我火速辦了婚禮,結(jié)果婚禮上疫稿,老公的妹妹穿的比我還像新娘培他。我一直安慰自己,他們只是感情好遗座,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布舀凛。 她就那樣靜靜地躺著,像睡著了一般途蒋。 火紅的嫁衣襯著肌膚如雪猛遍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天号坡,我揣著相機(jī)與錄音懊烤,去河邊找鬼。 笑死宽堆,一個胖子當(dāng)著我的面吹牛腌紧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畜隶,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼壁肋,長吁一口氣:“原來是場噩夢啊……” “哼号胚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浸遗,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤猫胁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乙帮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杜漠,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年察净,在試婚紗的時候發(fā)現(xiàn)自己被綠了驾茴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡氢卡,死狀恐怖锈至,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情译秦,我是刑警寧澤峡捡,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站筑悴,受9級特大地震影響们拙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阁吝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一砚婆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧突勇,春花似錦装盯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至定躏,卻和暖如春账磺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痊远。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工绑谣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拗引。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像幌衣,于是被迫代替她去往敵國和親矾削。 傳聞我的和親對象是個殘疾皇子壤玫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,647評論 2 354