PhoneGap / ChildBrowser - POST App Form到ChildBrowser

时间:2012-02-16 19:11:27

标签: ios xcode cordova phonegap-plugins

我正在使用PhoneGap构建iPhone应用程序。我正在使用ChildBrowser插件。

如果我在应用程序中有一个带有用户名/密码的表单,那么我是否可以将这些信息发布到www.mydomain.com/login.php这样的URL并在ChildBrowser中打开它?

请告诉我。

感谢。

2 个答案:

答案 0 :(得分:3)

您当然可以将GET参数传递给childBrowser.showWebPage()

您可以在应用中拦截表单的提交,并收集传递的字段名称和值(假设这是一个登录表单,例如用户名和密码),并将它们作为参数传递给在ChildBrowser中打开的URL。 / p>

childBrowser.showWebPage('https://www.mydomain.com/login.php?username='+username+'&password='+password)

这是一个用于演示目的的相当简单的版本。它不会花费太多时间来改善它。

捕获当然是通过GET发送的。如果您的登录表单期待POST而您无法更改,则可能会出现问题。

编辑:

如果POST是您唯一的选择,也许您最好使用AJAX发布到表单而不是使用子浏览器。

答案 1 :(得分:3)

我一直在寻找解决方案,并且正在开发它。这在iPhone的儿童浏览器中不是开箱即用的。 所以,这里是我添加到插件的代码。 仅供参考,数据应为格式为字符串的字符串:arg1 = value1& arg2 = value2& foo = bar

<强> ChildbrowserViewController 我在那里添加了以下方法:

- (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 我在showWebPage方法中添加了以下代码:

NSString* method = [ options objectForKey:@"method"];
if ([method isEqualToString:@"POST"]){
    [childBrowser postURL:url data:[options objectForKey:@"data"]];
}else{
    [childBrowser loadURL:url];
}

HTH! 米尔顿。