我想在我在UIWebView中加载的网页中输入密码。密码是一个字符串,我想输入密码并在视图加载时自动点击页面中的按钮。
任何帮助?
答案 0 :(得分:2)
如果您正在使用UIWebView,我假设您正在将一些Web服务加载到该WebView中。为什么不将您的登录系统构建到Web服务中?你甚至可以使用HTTP Basic Auth。
如果您正在管理cocoa应用程序中的密码,那么我可能会使用UITextField实现一个UIAlertView,要求输入密码。当用户按下Login时,您可以验证密码,然后在UIWebView中加载Web服务。
如果您在网站上的数据库中管理密码,那么您将构建一个html / js / php / mysql登录表单并首先将其加载到UIWebView中。
<强>更新强>
我会选择第一个选项并使用cocoa控件显示您自己的登录表单,例如UIAlertView和2个UITextFields。然后,您可以使用钥匙串服务保存用户名和密码,并在每次用户启动应用程序或网络会话到期时提交。
如果您想尝试这种方法,我建议您查看ASIHTTPRequest框架。特别是ASIFormDataRequest,您可以轻松发送带有正确字段的表单。
- (void)login
{
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
// Change these values to the ones in NSUserDefaults and the KeyChain
[request setPostValue:@"Joe" forKey:@"username"];
[request setPostValue:@"Secret" forKey:@"password"];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
// Use when fetching binary data.
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
答案 1 :(得分:1)
只是一个想法:您可以尝试在页面中添加一些javascript,然后在webview中显示它,并使用ONLOAD事件填写密码字段并发布表单。
要做到这一点,你有2个解决方案:
使用UIWebView的stringByEvaluatingJavaScriptFromString实例方法,您可以在webViewDidFinishLoad委托方法中评估您的javascript。您可以在此处找到示例:http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview
或者,如果由于某种原因您无法在上下文中使用此解决方案,则可以始终使用NSURLConnection下载HTML,然后编辑字符串以插入您的javascript。然后使用loadHTMLString:baseURL: