2011-08-11 17 views
9

Tengo un UIViewController que es un UIWebViewDelegate y tiene un UIWebView dentro de él. Estoy tratando de cargar una URL concretadidFailLoadWithError se llama con UIWebView a pesar de que la página más tarde carga

NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:requestObj]; 
    [self.view addSubview:webView]; 
    [webView release]; 

Pero el método didFailLoadWithError delegado es casi al instante llamaron, y el objeto de error es:

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} 

Sin embargo poco tiempo después, se puede ver que el sitio web cargas bien.

¿Por qué se llama al método de falla? ¿Y cómo sé cuándo realmente ha fallado versus cuándo se llamó el método independientemente de si el sitio web realmente falló o no?

+0

tengo mismo error debido primera vez que estaba utilización url y la segunda vez me carga url1. Quizás ayude a cualquiera. –

Respuesta

37

, usted puede obtener este error cuando la página se redirige al instante a través de JavaScript o de alguna manera lo demás

Puede evitar mostrar el error de respuesta desde aquí: How do I fix NSURLErrorDomain error -999 in iPhone 3.0 OS

como

if ([error code] != NSURLErrorCancelled) { //show error alert, etc. } 

pero no sé cómo reconocer dónde fue invocado.

+1

'if ([código de error]! = NSURLErrorCancelled) {// mostrar alerta de error, etc.} 'La URL debe ser mayúscula :) –

+0

@YasKuraishi gracias por notar –

+0

@MarekSebera gran trabajo +1 – iLearner

0

De acuerdo con otro StackOverflow question from a while back, el código de error que está recibiendo es causado por una solicitud realizada antes de que se haya completado la solicitud anterior.

Lo que puede estar sucediendo es que está haciendo múltiples llamadas al mismo tiempo/muy rápido, y una está teniendo éxito (por lo que carga su página web) pero la otra está fallando.

-1

Uso TapGesture en la vista web utilizando tapcount de 1. El uso de una función para el manejo de TapGesture, comprobar si la URL devuelve el código de estado 200, si es así, llame a la función a continuación

-(void)animateme{ 
    NSString *urlAddress = Connecting_URL 
    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [self.webview loadRequest:requestObj]; 
} 

Y, usando la función de delegado,

-(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]; 
} 

espero que ayude :)

+0

Esto no responde pregunta – miniBill

Cuestiones relacionadas