我正在制作的应用程序的一个功能是将用户登录到我们的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
?
答案 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];