2012-02-28 22 views
9

En mi navegador web, estoy tratando de cargar un UIWebView con NSData obtenido de un NSURLConnection. Cuando intento cargarlo en el UIWebView, en lugar del sitio, aparece el texto sin formato HTML.Cargando NSData en un UIWebView

Aquí está mi código:

en viewDidLoad:

NSURLRequest *request = [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.msn.com"]]; 
[NSURLConnection connectionWithRequest: request delegate:self]; 

más adelante en el código:

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
    { 
    webdata = [NSMutableData dataWithData: data]; 
    } 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
    { 
    [webview loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
    } 

UIWebView loading plain HTML instead of loading the page

+0

Ver https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html – titaniumdecoy

Respuesta

14

No está adjuntando datos que está recibiendo. Utilice este fragmento de código

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ 
    if (webdata == nil) { 
     webdata = [[NSMutableData alloc] init]; 
    } 
    [webdata appendData:data]; 
} 

Este método se puede llamar una o más veces, según la longitud de los datos. Entonces, en lugar de asignar nuevos datos a su ivar, anexe sus datos para que tenga la respuesta completa, no el último paquete de datos recibido.
------------------------------------------------ -------------------------------------------------- ----------------------------------
Actualizado
O utilizar así.

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ 
     webdata = [[NSMutableData alloc] init]; 
} 
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ 
    [webdata appendData:data]; 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
    [mWebView loadData:webdata MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil]; 
} 
+1

El método anterior funciona muy bien, gracias. Solo una cosa: está cargando las versiones de escritorio de los sitios web cuando uso este método en lugar de usar UIWebview loadRequest: NSURLRequest. ¿Hay alguna manera fácil de cargar la versión móvil de los sitios de forma predeterminada? (Soy nuevo en este tipo de cosas) – Greg

+0

yo también: D .. Pon esto como una nueva pregunta. Hasta entonces encontraré la respuesta ... y publicaré aquí el enlace de su nueva pregunta para que, si la respuesta llega, también deje que sepa cómo hacerlo. –

+0

También busco cómo cargar la versión móvil y uso el cargador personalizado para cargar los enlaces cliqueados dentro de UIWebView –