亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2016年11月03日 15:52:50   投稿:lqh  
這篇文章主要介紹了IOS UIWebView獲取404、504等錯誤問題的相關(guān)資料,并對相應(yīng)的錯誤問題提出相應(yīng)的解決方案,需要的朋友可以參考下

UIWebView獲取404、504等錯誤碼

問題描述

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

問題分析

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

 // webview被指示加載內(nèi)容時調(diào)用,返回YES才會進行加載
  - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
  // webview已經(jīng)開始加載一個請求后調(diào)用
  - (void)webViewDidStartLoad:(UIWebView *)webView;
  // webview結(jié)束加載請求之后調(diào)用
  - (void)webViewDidFinishLoad:(UIWebView *)webView;
  // 請求加載中發(fā)生錯誤時調(diào)用
  - (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;

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

    然后,從網(wǎng)上搜索該問題,發(fā)現(xiàn)網(wǎng)友提供的方法都是使用sendSynchronousRequest方法返回NSHTTPURLResponse的狀態(tài)碼進行判斷。可是,又出現(xiàn)了一個警告,sendSynchronousRequest在iOS9以后被棄用了,就用新的方法dataTaskWithRequest代理。

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

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

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

問題解決

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

 // 方法一
  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)碼,具體可以根據(jù)業(yè)務(wù)需求確定。

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

相關(guān)文章

  • iOS開發(fā)中使用FMDB來使程序連接SQLite數(shù)據(jù)庫

    iOS開發(fā)中使用FMDB來使程序連接SQLite數(shù)據(jù)庫

    這篇文章主要介紹了iOS開發(fā)中使用FMDB來使程序連接SQLite數(shù)據(jù)庫,SQLite是一個簡單的嵌入式數(shù)據(jù)庫,非常適合輕量級使用,需要的朋友可以參考下
    2015-11-11
  • 基于UIControl控件實現(xiàn)ios點贊功能

    基于UIControl控件實現(xiàn)ios點贊功能

    在開發(fā)當(dāng)中,可能很多時候都需要做個點贊的需求,如果用按鈕實現(xiàn),按鈕作為一個系統(tǒng)復(fù)合控件,外部是一個 View--》UIControl的容器,本文給大家分享一個基于UIControl控件實現(xiàn)ios點贊功能,需要的朋友可以參考下
    2015-09-09
  • iOS捕捉截屏事件并展示截圖效果

    iOS捕捉截屏事件并展示截圖效果

    這篇文章主要為大家詳細介紹了iOS捕捉截屏事件并展示截圖效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • iOS中MD5加密算法的介紹和使用

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

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應(yīng)特征生成一段32位的數(shù)字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文章就給大家介紹了iOS中MD5加密算法,已經(jīng)iOS中MD5加密算法的使用,有需要的朋友們可以參考借鑒。
    2016-10-10
  • iOS多語言本地化流程的優(yōu)化方案

    iOS多語言本地化流程的優(yōu)化方案

    這篇文章主要給大家介紹了關(guān)于iOS多語言本地化流程的優(yōu)化的相關(guān)資料,多語言本地化是我們大家在開發(fā)中經(jīng)常會遇到的一個功能,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2018-01-01
  • 解決Xcode 8構(gòu)建版本iTunes Connect獲取不到應(yīng)用程序狀態(tài)的辦法

    解決Xcode 8構(gòu)建版本iTunes Connect獲取不到應(yīng)用程序狀態(tài)的辦法

    這篇文章主要介紹了關(guān)于解決Xcode 8構(gòu)建版本iTunes Connect獲取不到應(yīng)用程序狀態(tài)的辦法,需要的朋友可以參考下
    2017-03-03
  • iOS10適配以及Xcode8使用需要注意的那些坑

    iOS10適配以及Xcode8使用需要注意的那些坑

    這篇文章主要為大家詳細介紹了iOS10的適配以及Xcode8使用需要注意的那些坑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • swift 單例的實現(xiàn)方法及實例

    swift 單例的實現(xiàn)方法及實例

    這篇文章主要介紹了swift 單例的實現(xiàn)方法及實例的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • iOS實現(xiàn)多個垂直滑動條并列視圖

    iOS實現(xiàn)多個垂直滑動條并列視圖

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)多個垂直滑動條并列視圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • iOS中的實時遠程配置全紀錄

    iOS中的實時遠程配置全紀錄

    這篇文章主要給大家介紹了關(guān)于iOS中實時遠程配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01

最新評論