2010-01-14 22 views
5

Necesito controlar un sitio web que se carga en un UIWebView como enviar datos de publicación y usar solicitudes de obtención. Después de cada solicitud, la respuesta debe cargarse como una cadena en una variable.SDK de iPhone: controle los sitios web en UIWebView mediante programación

La razón de esto es que estoy tratando de obtener datos de un sitio web que no tiene una API web pública y utiliza la autenticación de usuario basada en cookies. Así que quiero iniciar sesión con el usuario, buscar algunos datos de ese sitio y presentar los resultados.

¿Es algo como esto posible?

EDIT: me encontré con el método stringByEvaluatingJavaScriptFromString. ¿Sería posible utilizar este método para controlar el contenido dentro de UIWebView con JS? ¿Como enviar un formulario web y esperar a que la página termine de cargarse y obtener los datos de respuesta?

EDIT 2: acaba de encontrar un marco que podría ser útil ASIHTTPRequest

Respuesta

2

Claro que es posible. Simplemente haga el código de red usted mismo y luego vacíe el HTML resultante en UIWebView.

// Do your POST 
NSURL *url = [NSURL URLWithString:"http://stackoverflow.com"]; 
NSString *body = @"laadeedaa"; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod: @"POST"]; 
[request setHTTPBody: [body dataUsingEncoding:NSUTF8StringEncoding]]; 

// Dump the response to the UIWebView 
[webView loadRequest:request]; 

Si desea procesar la respuesta antes de mostrarla, entonces usted tendrá que hacer algo a lo largo de las líneas de:

NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *respData = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:&response 
                error:&error]; 
NSString *respString = [[[NSString alloc] initWithData:respData 
               encoding:NSUTF8StringEncoding] autorelease]; 

NSString *htmlString = [self doSomethingWith:respString]; 

[webView loadHTMLString:htmlString baseURL:@"http://stackoverflow.com"]; 

También hay que tener en cuenta que se puede utilizar JavaScript para controlar el navegador :

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 
+0

Gracias por su rápida respuesta. ¿Se encargará NSMutableURLRequest de las cookies web de autenticación? ¿O simplemente enviará la solicitud, como disparar y olvidar? – dan

+1

No sé para ser honesto. He estado usando MonoTouch durante los últimos 6 meses. Apple tiene buenos documentos; de lo contrario, abra una nueva pregunta SO. –

Cuestiones relacionadas