2010-01-14 13 views
5

Ho bisogno di controllare un sito Web che viene caricato in un UIWebView come inviare i dati del post e utilizzare richieste di ottenere. Dopo ogni richiesta, la risposta deve essere caricata come una stringa in una variabile.iPhone SDK: controllo siti Web in UIWebView a livello di programmazione

Il motivo è che sto cercando di recuperare i dati da un sito Web privo di API Web pubblica e utilizzando l'autenticazione utente basata su cookie. Quindi voglio accedere all'utente, recuperare alcuni dati da quel sito e presentare i risultati.

È qualcosa di simile a questo?

EDIT: Ho appena incontrato il metodo stringByEvaluatingJavaScriptFromString. Sarebbe possibile utilizzare questo metodo per controllare il contenuto all'interno di UIWebView con JS? Come inviare un modulo Web e attendere che la pagina finisca di caricare e ottenere i dati di risposta?

EDIT 2: appena trovato una struttura che potrebbe essere utile ASIHTTPRequest

risposta

2

Certo che è possibile. Basta fare il codice di rete e quindi scaricare l'HTML risultante con 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]; 

Se si desidera elaborare la risposta prima di visualizzarla, poi si vuole fare qualcosa sulla falsariga di:

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"]; 

Anche tenere a mente che è possibile utilizzare JavaScript per controllare il browser :

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

Grazie per la risposta veloce. Il NSMutableURLRequest si prenderà cura dei cookie Web auth? O semplicemente invierà la richiesta - come il fuoco e dimenticherà? – dan

+1

Non so per essere onesto. Sto usando MonoTouch per gli ultimi 6 mesi. Apple ha buoni documenti; altrimenti, apri una nuova domanda SO. –

Problemi correlati