我有一个UIViewController,它是一个UIWebViewDelegate,里面有一个UIWebView。我正在尝试加载特定的网址
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[self.view addSubview:webView];
[webView release];
但是didFailLoadWithError
委托方法几乎立即被调用,错误对象是:
Did fail load with error: Error Domain=NSURLErrorDomain Code=-999 "The operation couldn’t be completed. (NSURLErrorDomain error -999.)" UserInfo=0x1a66c0 {NSErrorFailingURLKey=www.somewebsite.com, NSErrorFailingURLStringKey=www.somewebsite.com}
然而,在很短的时间之后,您可以看到网站加载得很好。
为什么要调用fail方法?而且无论网站是否真的失败,我怎么知道实际失败的时间与调用方法的时间有关?
答案 0 :(得分:38)
当页面立即通过javascript或其他方式重定向时,您可能会收到此错误
您可以通过此处的回答来避免显示错误:How do I fix NSURLErrorDomain error -999 in iPhone 3.0 OS
像
if ([error code] != NSURLErrorCancelled) { //show error alert, etc. }
但我不知道如何识别调用它的位置。
答案 1 :(得分:0)
因此,根据另一个StackOverflow question from a while back,您获得的错误代码是由上一个请求完成之前发出的请求引起的。
可能发生的事情是你正在同时/非常迅速地进行多个电话,一个正在成功(所以你的网页加载)但另一个正在失败。
答案 2 :(得分:-1)
使用tapcount为1在Web视图上使用TapGesture。 使用函数处理TapGesture,检查URL是否返回状态代码200,如果是,请调用以下函数
-(void)animateme{
NSString *urlAddress = Connecting_URL
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:requestObj];
}
并且,使用委托函数,
-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Device in offline" message:@"Please check your internet connection" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[alert show];
}
希望有所帮助:)