问题描述

与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
plain
copy

  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. if (isRequestWeb) {
  7. NSHTTPURLResponse *response = nil;
  8. NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
  9. if (response.statusCode == 404) {
  10. // code for 404
  11. return NO;
  12. } else if (response.statusCode == 403) {
  13. // code for 403
  14. return NO;
  15. }
  16. [webView loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:[request URL]];
  17. isRequestWeb = NO;
  18. return NO;
  19. }
  20. return YES;
  21. }

最新文章

  1. 分享自己的超轻量级高性能ORM数据访问框架Deft
  2. Apache 优雅重启 Xampp开机自启 - 【环境变量】用DOS命令在任意目录下启动服务
  3. EXT3_DX_ADD_ENTRY: DIRECTORY INDEX FULL!
  4. C++ 11中的右值引用以及std::move
  5. 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl
  6. C#反射深入学习
  7. Codeforces Gym 100338C C - Important Roads tarjan
  8. pgpool常用命令
  9. cf B Inna and Candy Boxes
  10. 来自苹果的编程语言——Swift简单介绍
  11. SQL Server插入中文数据后出现乱码
  12. 王立平--Unity中间GUI Skin
  13. SqlServer中存储过程中将Exec的执行结果赋值给变量输出
  14. 在Windows上搭建PhoneGAP(crodova)的开发环境
  15. Date Structure01-绪论作业
  16. MySQL 必知必会学习笔记(常用命令二)
  17. 将Vue移动端项目打包成手机app---HBuilder
  18. application.properties详解 --springBoot配置文件【转载】
  19. Map字符串类型去掉空格处理
  20. [MySQL 5.6] information_schema.innodb_metrics

热门文章

  1. 2019-8-31-dotnet-通过-HttpClient-下载文件同时报告进度的方法
  2. 图(graph)
  3. vue tabNav 点击
  4. H5全局属性contenteditable,实现可编辑元素
  5. ul -- li 模拟select下拉框
  6. Oracle分页:工作记录
  7. NX二次开发-算法篇-找相切面
  8. [NOI.AC] candy
  9. 配置Tomcat-8.5 JVM内存参数
  10. (转)python基础之迭代器协议和生成器(一)