2012-05-05 23 views
6

Mi chiedevo se fosse possibile acquisire i dati POST e salvarlo quando un pulsante di invio è stato premuto in un UIWebView. Dovrei usare javascript e aggiungere eventlisteners in modo da poter ottenere i valori prima che l'invio passi? In tal caso, come potrei ottenere i dati sul mio codice in obj c? Altrimenti, c'è un modo più semplice? GrazieAcquisizione dati POST da UIWebView

risposta

11

È necessario implementare UIWebViewDelegate. C'è un hook chiamato "shouldStartLoadWithRequest" che viene chiamato da iOS.

Psueudocodice di seguito.

@interface MyController<UIWebViewDelegate> 
@end 

@implementation MyController 
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request  navigationType:(UIWebViewNavigationType)navigationType 
{ 
    // do your magic 
    NSData *data = request.HTTPBody; // contains the HTTP body as in an HTTP POST request. 

    // return YES to continue to load the URL 
} 
@end 
+0

Grazie, ho potuto NSLog i dati. Tuttavia, se volessi anche il testo originale dei campi inviati, avrei bisogno di javascript? – bph

+0

Raccomando di passare il testo/etichetta originale come campo modulo nascosto e quindi di estrarlo come un campo nei dati POST. Se non preferisci questo, puoi usare valutare javascript arbitrario usando [webView stringByEvaluatingJavaScriptFromString: @ ""]; – Ash

+6

È possibile ottenere il testo dei dati POST con il metodo ... '[[NSString alloc] initWithData: codifica dei dati: NSASCIIStringEncoding]' –