一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - IOS UIWebView獲取404、504等錯誤問題解決方案

IOS UIWebView獲取404、504等錯誤問題解決方案

2021-02-06 14:06iOS開發(fā)網 IOS

這篇文章主要介紹了IOS UIWebView獲取404、504等錯誤問題的相關資料,并對相應的錯誤問題提出相應的解決方案,需要的朋友可以參考下

UIWebView獲取404504等錯誤碼

問題描述

    在使用webview時,會存在這么一個問題:
    如果訪問服務器返回異常,比如404、504這樣的錯誤,需要在native端展示特定的圖片和文案(404、504醬紫的錯誤碼有些不美觀)。那么,問題就來了,怎樣才能知道webview的訪問出錯了,是什么錯???

問題分析

    從webview發(fā)起請求之后,能夠查看webview加載狀態(tài)的就是它的代理了,所以就從各個代理方法著手分析。

?
1
2
3
4
5
6
7
8
// webview被指示加載內容時調用,返回YES才會進行加載
 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
 // webview已經開始加載一個請求后調用
 - (void)webViewDidStartLoad:(UIWebView *)webView;
 // webview結束加載請求之后調用
 - (void)webViewDidFinishLoad:(UIWebView *)webView;
 // 請求加載中發(fā)生錯誤時調用
 - (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;

    首先,肯定是從didFailLoadWithError代理方法入手,發(fā)現請求到404頁面時,并沒有調用該方法,這是為什么呢?原來,該方法時加載過程出現問題調用,我們順利的得到了404頁面,就不算加載過程的問題。

    然后,從網上搜索該問題,發(fā)現網友提供的方法都是使用sendSynchronousRequest方法返回NSHTTPURLResponse的狀態(tài)碼進行判斷??墒牵殖霈F了一個警告,sendSynchronousRequest在iOS9以后被棄用了,就用新的方法dataTaskWithRequest代理。

 'sendSynchronousRequest:returningResponse:error:' is deprecated: first deprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:]

    以上是獲取狀態(tài)碼的方式,具體在哪個代理函數中處理,還得再看看:

    通過具體代碼分析發(fā)現,放在shouldStartLoadWithRequest和webViewDid FinishLoad都可以得到相應的狀態(tài)碼,放在webViewDidStartLoad得到的狀態(tài)碼都是0.經過分析發(fā)現,調用webViewDidStartLoad方法時,request請求已經發(fā)起正在等待服務器處理結果。

問題解決

    綜上,最終該問題就有兩種處理方式了,分別是sendSynchronousRequest和dataTaskWithRequest。具體代碼如下:

?
1
2
3
4
5
6
7
8
9
10
// 方法一
 NSHTTPURLResponse *response = nil;
 [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
 NSLog(@"statusCode:%ld", response.statusCode);
  // 方法二
 NSURLSessionDataTask * dataTask = [[NSURLSession sharedSession] dataTaskWithRequest:webView.request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
   NSHTTPURLResponse *tmpresponse = (NSHTTPURLResponse*)response;
   NSLog(@"statusCode:%ld", tmpresponse.statusCode);
 }];
 [dataTask resume];

    在shouldStartLoadWithRequest和webViewDidFinishLoad方法中都能獲取到該狀態(tài)碼,具體可以根據業(yè)務需求確定。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
  • IOSiOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法

    iOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態(tài)欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發(fā)過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS開發(fā)之視圖切換

    iOS開發(fā)之視圖切換

    在iOS開發(fā)中視圖的切換是很頻繁的,獨立的視圖應用在實際開發(fā)過程中并不常見,除非你的應用足夠簡單。在iOS開發(fā)中常用的視圖切換有三種,今天我們將...

    執(zhí)著丶執(zhí)念5282021-01-16
主站蜘蛛池模板: 四虎视屏 | 6080伦理久久精品亚洲 | 亚洲人成在线观看一区二区 | 午夜福利院电影 | 亚洲国产第一区二区香蕉日日 | 亚洲第一色视频 | 四虎永久网址影院 | 男人疯狂擦进女人下面 | 日韩高清成人毛片不卡 | 调教肉文| 果冻传媒天美传媒乌鸦传媒 | 亚洲精品91大神在线观看 | 羞羞视频动漫 | 福利一区在线观看 | 99成人免费视频 | 国产精品天天影视久久综合网 | 欧美日韩亚洲一区二区三区在线观看 | 韩剧hd| 国产精品国产色综合色 | 无码欧美喷潮福利XXXX | 亚洲午夜久久久久影院 | 精品亚洲一区二区三区在线播放 | 69日本xxⅹxxxxx19 | 天天色色色 | 国产在视频 | 91精品久久一区二区三区 | 色老板视频在线观看 | 51精品| 久青草国产在线观看视频 | 日本天堂视频 | 欧美国产精品 | 成成人看片在线 | 日日碰碰 | 精品videoss另类日本 | 无限好资源第一片免费韩国 | 和直男装修工在工地啪 | 久久国产加勒比精品无码 | 波多野结衣在线观看中文字幕 | bt国产| 国产精品短视频 | 国产探花在线视频 |