1

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

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

请告诉我。

谢谢。

4

2 回答 2

3

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

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

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

这是一个用于演示目的的相当简单的版本。让它变得更好并不需要太多。

问题当然是它是通过 GET 发送的。如果您的登录表单需要 POST 并且您无法更改它,那么您可能会遇到问题。

编辑:

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

于 2012-02-20T01:08:14.580 回答
3

我一直在寻找解决方案,并结束了开发。这在 iPhone 的 childbrowser 中并不是开箱即用的。所以,这里是我添加到插件中的代码。仅供参考,数据应该是格式为: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];
}

!弥尔顿。

于 2012-05-25T14:47:02.010 回答