PhoneGap / ChildBrowser - POST App Form per ChildBrowser
-
26-10-2019 - |
Domanda
Sto costruendo un iPhone App utilizzando PhoneGap. Sto usando ChildBrowser plugin.
Se ho un modulo in App con nome utente / passaggio, è qualche cosa che posso inviare queste informazioni a un URL del tipo www.mydomain.com/login.php e aprirlo in ChildBrowser?
Per favore fatemi sapere.
Grazie.
Soluzione
Si può certamente passare parametri GET al childBrowser.showWebPage()
.
Si potrebbe intercettare il submit del modulo nella vostra app e raccogliere i nomi dei campi ei valori passati (supponendo che questo è un modulo di accesso, così dicono username e password) e passarli come parametri all'URL aperto nel ChildBrowser.
childBrowser.showWebPage('https://www.mydomain.com/login.php?username='+username+'&password='+password)
Questa è una versione piuttosto sofisticato a scopo dimostrativo. Non ci vuole molto per renderlo migliore.
Il problema è, naturalmente, che viene inviato tramite GET. Se il form di login si aspetta il POST e non si può cambiare la situazione, si potrebbe avere un problema.
Modifica:
Se il POST è l'unica opzione, forse si sarebbe meglio usare AJAX per inviare alla forma invece di utilizzare il browser del bambino.
Altri suggerimenti
Ero alla ricerca di una soluzione, e si è concluso in via di sviluppo di esso. Questo non viene fuori dalla scatola in childbrowser per iPhone. Quindi, ecco il codice che ho aggiunto al plugin. Cordiali saluti, i dati dovrebbero essere una stringa con il formato: arg1 = valore1 & arg2 = valore2 & foo = bar
ChildbrowserViewController Ho aggiunto il seguente metodo c'è:
- (void)postURL:(NSString*)url data:(NSString*)data{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: [NSURL URLWithString:url]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: [data dataUsingEncoding: NSUTF8StringEncoding]];
[webView loadRequest: request];
webView.hidden = NO;}
ChildbrowserCommand Ho aggiunto il seguente codice nel metodo showWebPage:
NSString* method = [ options objectForKey:@"method"];
if ([method isEqualToString:@"POST"]){
[childBrowser postURL:url data:[options objectForKey:@"data"]];
}else{
[childBrowser loadURL:url];
}
HTH! Milton.