• iOS UIWebView获取403/404


    问题描述

        与WindowsPhone不同,iOS UIWebView并不认为403/404这种情况下页面访问是失败的,这也情有可原,但有时候,我们需要对WebView所遇到的403/404进行处理。

    解决思路

        由于WebView在回调事件,要么发生在NSURLConnection请求之前:

            - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

            - (void)webViewDidStartLoad:(UIWebView *)webView;

        要么发生在NSURLConnection请求之后:

            - (void)webViewDidFinishLoad:(UIWebView *)webView;

            - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

        这两种情况下都无法获取状态码,故NSURLConnection必须由我们来完成。然后让WebView调用loadData方式展现页面,而403/403由我们自己处理。

    解决方案

    [python] view plaincopy
    1. #pragma mark -  
    2. #pragma mark - UIWebView Delegate Methods  
    3. - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  
    4. {  
    5.     static BOOL isRequestWeb = YES;  
    6.       
    7.     if (isRequestWeb) {  
    8.         NSHTTPURLResponse *response = nil;  
    9.           
    10.         NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];  
    11.         if (response.statusCode == 404) {  
    12.             // code for 404  
    13.             return NO;  
    14.         } else if (response.statusCode == 403) {  
    15.             // code for 403  
    16.             return NO;  
    17.         }  
    18.           
    19.         [webView loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:[request URL]];  
    20.           
    21.         isRequestWeb = NO;  
    22.         return NO;  
    23.     }  
    24.       
    25.     return YES;  
    26. }
  • 相关阅读:
    mysql 性能优化方案1
    微信接口php
    IT girl
    jsonp 使用总结
    Oracle 10g体系机构及安全管理《思维导图》
    图形化报表
    JQuery中Ajax应用
    jquery中的事件与动画
    jquery的DOM操作
    jQuery中的选择器《思维导图》
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879597.html
Copyright © 2020-2023  润新知