加載UIWebView時特殊狀態(tài)碼類似401/403/404的處理

APP中調(diào)用網(wǎng)頁的情況很多滤钱,常規(guī)情況下不需要我們考慮任何處理偶器,直接加載即可斩萌。可是功能需要較為嚴(yán)格的時候屏轰,就需要前端的你設(shè)置準(zhǔn)確的處理颊郎,以達(dá)到更好的用戶體驗(yàn)。尤其是需要判斷狀態(tài)碼的時候霎苗,需要注意了姆吭。

獲取statusCode的正確姿勢

一般情況下正常加載網(wǎng)頁返回的statusCode都是200,當(dāng)然唁盏,也會有404内狸、400之類的情況,但是有一點(diǎn)要注意了厘擂,返回404這種狀態(tài)碼的時候昆淡,UIWebView的回調(diào)方法- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;是不會走的,因?yàn)閣eb成功load的刽严,只是服務(wù)端返回錯誤碼而已昂灵。因此要注意,需要通過單獨(dú)的方法而不是通過UIWebView的回調(diào)方法來獲取statusCode舞萄,通過查閱資料眨补,網(wǎng)上大多數(shù)的方法都是通過:
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; NSLog(@"statusCode:%ld", response.statusCode);
來獲取response的狀態(tài)碼,可是筆者經(jīng)過反復(fù)測試得不到正確結(jié)果倒脓,查看源碼發(fā)現(xiàn)在iOS9之后此方法已經(jīng)廢棄撑螺,官方解釋:
"Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h"
所以,別說了崎弃,棄之甘晤。
來看看最新的方法:
NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError *_Nullable error) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; NSLog(@"statusCode:%ld", httpResponse.statusCode); }]; [dataTask resume];
當(dāng)然了含潘,該方法是放在[_webView loadRequest:request];之前,還是放在UIWebView的回調(diào)方法中安皱,根據(jù)實(shí)際需要就行调鬓。
其實(shí),如果你在用三方AFNetworking酌伊,并且經(jīng)歷過2.0到3.0的更新腾窝,那么你會發(fā)現(xiàn)它也是在這方面進(jìn)行了大變革。

不同狀態(tài)碼的前端處理

statusCode已經(jīng)獲取到了居砖,后期處理就簡單了虹脯。
呵呵。
有時候奏候,當(dāng)網(wǎng)頁的statusCode為類似404時循集,我們并不希望只顯示“404 not found”。例如蔗草,筆者在加載網(wǎng)頁時都是需要在請求頭中添加參數(shù)token咒彤,如果token不對,后臺會給我返回401咒精,意思是登錄失效镶柱,需要重新登錄。此時則需要彈出登錄框之類的刷新UI動作模叙。
if (httpResponse.statusCode == 401) { // 彈出登錄框 }
當(dāng)statusCode=401時歇拆,網(wǎng)頁加載半天,彈出登錄框的方法也已經(jīng)走了范咨,不過彈出框直到最后才彈出故觅。
經(jīng)過反復(fù)測試,筆者才發(fā)現(xiàn)問題渠啊,原來在block中的刷新UI在這種情況下是需要把該方法添加到主線程中的输吏,加載速度恢復(fù),貼上代碼:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // 獲取返回的狀態(tài)嗎 NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError *_Nullable error) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; NSLog(@"statusCode:%ld", httpResponse.statusCode); if (httpResponse.statusCode == 401) { dispatch_sync(dispatch_get_main_queue(), ^{ // 彈出登錄框 }); }); } }]; [dataTask resume]; return YES; }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末替蛉,一起剝皮案震驚了整個濱河市评也,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灭返,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坤邪,死亡現(xiàn)場離奇詭異熙含,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)艇纺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進(jìn)店門怎静,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邮弹,“玉大人,你說我怎么就攤上這事蚓聘‰缦纾” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵夜牡,是天一觀的道長与纽。 經(jīng)常有香客問我,道長塘装,這世上最難降的妖魔是什么急迂? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蹦肴,結(jié)果婚禮上僚碎,老公的妹妹穿的比我還像新娘。我一直安慰自己阴幌,他們只是感情好勺阐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著矛双,像睡著了一般渊抽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上背零,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天腰吟,我揣著相機(jī)與錄音,去河邊找鬼徙瓶。 笑死毛雇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的侦镇。 我是一名探鬼主播灵疮,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼壳繁!你這毒婦竟也來了震捣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤闹炉,失蹤者是張志新(化名)和其女友劉穎蒿赢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渣触,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羡棵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗅钻。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皂冰。...
    茶點(diǎn)故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡店展,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秃流,到底是詐尸還是另有隱情赂蕴,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布舶胀,位于F島的核電站概说,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏峻贮。R本人自食惡果不足惜席怪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望纤控。 院中可真熱鬧挂捻,春花似錦、人聲如沸船万。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耿导。三九已至声怔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舱呻,已是汗流浹背醋火。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箱吕,地道東北人芥驳。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像茬高,于是被迫代替她去往敵國和親兆旬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評論 2 354

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