一种可能是消费shouldStartLoadWithRequest
。
你应该:
- 从请求中获取 url。
- 向 url 发送异步请求。
- 检查你是否得到回应。如果没有响应,则取消此请求,否则通过返回来允许它
TRUE
。
看看如何发送请求。
再次检查特定页面的可达性
使用可达性检查远程主机的可用性是否明智?
使用这种方式,您可以取消请求并通知用户指定的页面不可用。如果您有有效的响应,您还可以检查响应的HTTP 状态代码,通常为200 。
希望能帮助到你!
另一种方法是从您的网页本身处理它,即将它重定向到某个显示该页面不可用的常见页面,然后将back
其重定向到上一页。
编辑:
h
在单独的项目文件中尝试此代码:
@interface ViewController : UIViewController<UIWebViewDelegate>
并在m
文件中:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]];
UIWebView *wbWebView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.view addSubview:wbWebView];
[wbWebView setDelegate:self]; // <------------- set delegate
[wbWebView loadRequest:request];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"request loading... %@", [request URL].absoluteString);
// TODO : Validate here
// If validated then return TRUE otherwise false;
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"request finished loading");
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"request failed loading");
}