4

我正在制作的应用程序的功能之一是将用户登录到我们的 Campus Portal 网站。为方便使用,用户可以在应用程序中输入用户名和密码一次,并将保存以供以后所有登录使用。当用户点击一个按钮时,会自动发送登录信息,网站会以UIWebView.

假设用户名和密码分别存储在一个NSString. 我怎样才能使用这些数据以编程方式登录到这个网站UIWebView并在一个页面中显示它?

我对张贴和表格知之甚少,因此不胜感激。

这样的Stackoverflow 答案会有帮助吗?

这是我的代码的外壳

- (IBAction)btnGo:(id)sender {
    username = usernameField.text;
    password = passwordField.text;
    if (saveSwitch.isOn) {
        //Save data if the user wants
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        usernameSaved = username;
        passwordSaved = password;
        [appDelegate.listOfPortalCredentials replaceObjectAtIndex:0 withObject:usernameSaved];
        [appDelegate.listOfPortalCredentials replaceObjectAtIndex:1 withObject:passwordSaved];
    }
    //Insert username and password to web form, log in to portal
    //This is where I need help
}

编辑:

感谢 Karthik,我能够使用 Firebug 找到 HTTP Post。它给了我:

appName=ridgefield&portalUrl=portal%2Fridgefield.jsp%3F%26rID%3D0.18423783694092&username=<username>&password=<password>&B1=Log+In&url=portal%2Fmain.xsl%3FrID%3D0.6845596700302482&lang=en

其中 和 代表真实的用户名和密码。我相信这是我需要的。使用这个,我怎样才能在一个中显示登录页面UIWebView?我只需要在UIWebView?

4

1 回答 1

3

使用 UIWebView,并使用用户名和密码对https://ic.ridgefield.org/campus/verify.jsp进行http POST 。

要了解它是如何工作的,请在 Firefox 浏览器上安装 Firebug,然后转到 firebug 上的“网络”选项卡,然后打开您的网站并输入一些用户名/密码。

您应该使用代码模仿该动作。(我总是从服务器收到无效的用户名或密码响应,因为我没有帐户,我尝试了一些随机的,并且由于网站上没有注册,我无法验证这一点)

UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.frame];
[self.view addSubview:webView];

NSString* username = @"";
NSString* password = @"";

NSURL* url = [NSURL URLWithString:@"https://ic.ridgefield.org/campus/verify.jsp"];

NSString* body = [NSString stringWithFormat:@"appName=ridgefield&username=%@&password=%@", username, password];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:30];
request.HTTPMethod = @"POST";
request.HTTPBody = [body dataUsingEncoding:NSStringEncodingConversionAllowLossy];

[webView loadRequest:request];
于 2012-12-16T04:57:18.103 回答