Alamofire從基礎(chǔ)到進(jìn)階 小技巧(二)

Alamofire
Version:4.5.1
Swift Version: 4.0.3

Podfiles

# Uncomment the next line to define a global platform for your proje
platform :ios, '8.0'
target 'UseageAlamofire' do
  use_frameworks!
  pod 'Alamofire'
end

目錄:
Alamofire從基礎(chǔ)到進(jìn)階 基礎(chǔ)請求與響應(yīng)(一)
Alamofire從基礎(chǔ)到進(jìn)階 小技巧(二)

鏈?zhǔn)巾憫?yīng)處理

Alamofire的響應(yīng)處理是鏈?zhǔn)降牧锍驗楫?dāng)你request一個請求的時候,它返回的是一個DataRequest的,所以你可以使用點語法再次進(jìn)行序列化操作抱环,具體我們看一下代碼:

let url = "http://httpbin.org/get"
Alamofire.request(url)
    .responseData(completionHandler:  { response in
        print("response.result.value data")
        print(response.result.value)
    })
    .responseJSON(completionHandler: { response in
        print("response.result.value json")
        print(response.result.value)
    })

當(dāng)我們使用鏈?zhǔn)巾憫?yīng)處理的兩次序列化的時候续崖,實際上Alamofire只請求了一次服務(wù)器者甲,但是對請求的數(shù)據(jù)進(jìn)行了兩次序列化操作,所以我們可以得到兩次次回調(diào)結(jié)果喉钢,神奇吧。

可自定義響應(yīng)隊列

Alamofire的響應(yīng)處理默認(rèn)是在主線程進(jìn)行的序列化操作良姆,它也提供了我們一個參數(shù)可以進(jìn)行自定義隊列操作肠虽,我們看一下代碼:

let queue = DispatchQueue.global()
Alamofire.request(url).responseJSON(queue: queue, completionHandler: { response in
    print("response.result.value qos")
    print(response.result.value)
})

我們定義了DispatchQueue.global()就會改變Alamofire在主線程中進(jìn)行的序列化,從而從我們的自定義線程中進(jìn)行序列化操作玛追。

自定義超時時間

我們在做應(yīng)用的時候税课,當(dāng)我們從服務(wù)器請求數(shù)據(jù)的時候避免不了的要讓用戶等待一段時間,Alamofire為我們提供了 30秒的超時時間痊剖,當(dāng)然我們也可以進(jìn)行手動更改:

let url2 = URL(string: "http://httpbin.org/gzip")
var urlReuquest = URLRequest(url: url2!)
urlReuquest.timeoutInterval = 1
Alamofire.request(urlReuquest).responseJSON(completionHandler: { response in
    print(response.result.value)
})

我們設(shè)置了超時時間為1秒韩玩,所以在1秒內(nèi),沒有收到服務(wù)器的返回陆馁,Alamofire就會給我們提供Error code = -1001找颓,就是超時的響應(yīng)。

響應(yīng)處理驗證

我們收到服務(wù)器返回的數(shù)據(jù)時候叮贩,很多時候我們都沒有提前做過校驗就用JSON去進(jìn)行解析击狮,現(xiàn)在我們可以對拿回的數(shù)據(jù)先進(jìn)性校驗再做處理,具體可看代碼:

Alamofire.request(url)
    .validate(statusCode: 300..<500)
    .validate(contentType: ["application/json"])
    .responseJSON(completionHandler: { response in
        print("response.result.value validate")
        print(response.result.value)
        print(response.result.error)
    })

Alamofire為我們默認(rèn)的statusCode是200..<300當(dāng)然益老,我們?yōu)榱搜菔拘r灹辈唬跃陀昧?00..<500,這個時候Alamofire就返回給了我們一個nil。validate(contentType:)為我們校驗服務(wù)器返回的是否是application/json的類型杨箭。

--以此來記錄 Usage Alamofire ^ _^ --

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寞焙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捣郊,老刑警劉巖辽狈,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異呛牲,居然都是意外死亡刮萌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門娘扩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着茸,“玉大人,你說我怎么就攤上這事琐旁′汤” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵灰殴,是天一觀的道長敬特。 經(jīng)常有香客問我,道長牺陶,這世上最難降的妖魔是什么伟阔? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮掰伸,結(jié)果婚禮上皱炉,老公的妹妹穿的比我還像新娘。我一直安慰自己狮鸭,他們只是感情好合搅,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著怕篷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酗昼。 梳的紋絲不亂的頭發(fā)上廊谓,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音麻削,去河邊找鬼蒸痹。 笑死,一個胖子當(dāng)著我的面吹牛呛哟,可吹牛的內(nèi)容都是我干的叠荠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼扫责,長吁一口氣:“原來是場噩夢啊……” “哼榛鼎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤者娱,失蹤者是張志新(化名)和其女友劉穎抡笼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黄鳍,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡推姻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了框沟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藏古。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忍燥,靈堂內(nèi)的尸體忽然破棺而出拧晕,到底是詐尸還是另有隱情,我是刑警寧澤灾前,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布防症,位于F島的核電站,受9級特大地震影響哎甲,放射性物質(zhì)發(fā)生泄漏蔫敲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一炭玫、第九天 我趴在偏房一處隱蔽的房頂上張望奈嘿。 院中可真熱鬧,春花似錦吞加、人聲如沸裙犹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叶圃。三九已至,卻和暖如春践图,著一層夾襖步出監(jiān)牢的瞬間掺冠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工码党, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留德崭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓揖盘,卻偏偏與公主長得像眉厨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子兽狭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Alamofire 是一款 Swift 寫的 HTTP 網(wǎng)絡(luò)請求庫 前言 本篇內(nèi)容為 Alamofire 官方 R...
    zongmumask閱讀 20,699評論 6 66
  • 盡管Alamofire的github文檔已經(jīng)做了很詳細(xì)的說明憾股,我還是想重新梳理一遍它的各種用法鹿蜀,以及這些方法的一些...
    老馬的春天閱讀 15,956評論 28 134
  • Alamofire的基本用法 1.請求 這是一個最簡單的請求,這個請求即不需要參數(shù)荔燎,也不需要接收數(shù)據(jù)耻姥。接下來我們翻...
    水落斜陽閱讀 3,206評論 0 16
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件有咨、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,058評論 4 62
  • 與茶有緣閱讀 197評論 2 7