iOS UIWebView获取403/404
2024-09-02 09:24:51
问题描述
与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由我们自己处理。
解决方案
- #pragma mark -
- #pragma mark - UIWebView Delegate Methods
- - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
- {
- static BOOL isRequestWeb = YES;
- if (isRequestWeb) {
- NSHTTPURLResponse *response = nil;
- NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
- if (response.statusCode == 404) {
- // code for 404
- return NO;
- } else if (response.statusCode == 403) {
- // code for 403
- return NO;
- }
- [webView loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:[request URL]];
- isRequestWeb = NO;
- return NO;
- }
- return YES;
- }
最新文章
- 分享自己的超轻量级高性能ORM数据访问框架Deft
- Apache 优雅重启 Xampp开机自启 - 【环境变量】用DOS命令在任意目录下启动服务
- EXT3_DX_ADD_ENTRY: DIRECTORY INDEX FULL!
- C++ 11中的右值引用以及std::move
- 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl
- C#反射深入学习
- Codeforces Gym 100338C C - Important Roads tarjan
- pgpool常用命令
- cf B Inna and Candy Boxes
- 来自苹果的编程语言——Swift简单介绍
- SQL Server插入中文数据后出现乱码
- 王立平--Unity中间GUI Skin
- SqlServer中存储过程中将Exec的执行结果赋值给变量输出
- 在Windows上搭建PhoneGAP(crodova)的开发环境
- Date Structure01-绪论作业
- MySQL 必知必会学习笔记(常用命令二)
- 将Vue移动端项目打包成手机app---HBuilder
- application.properties详解 --springBoot配置文件【转载】
- Map字符串类型去掉空格处理
- [MySQL 5.6] information_schema.innodb_metrics