以编程方式使用保存的用户名和密码登录网站

时间:2012-12-13 22:12:42

标签: objective-c ios forms uiwebview

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

我们假设用户名和密码都存储在NSString中。如何使用此数据以编程方式登录this website并在UIWebView中显示该页面?

我对发布和表单知之甚少,所以感谢任何帮助。

this Stackoverflow会回答帮助吗?

这是我的代码的shell

- (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

中加载上述网址

1 个答案:

答案 0 :(得分:3)

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

要了解它的工作原理,请在Firefox浏览器上安装Firebug并转到firebug上的“Net”标签,然后打开您的网站并输入一些用户名/密码。

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

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];