如何在objective-C中判断登录是否成功?

3
我正在尝试从Xcode登录到一个网站。我使用JavaScript和DOM与网站通信。我的问题在于,我可以输入用户名和密码并提交表单以登录,但我不知道如何检查密码是否有效。
如果密码无效,网站将显示“无法登录”。
以下是我目前的进展:
-(IBAction)Login:(id)sender {

   stud_pass = Username.text;
   password1 = Password.text;

   //Puts the 2 NSStrings into the websites text fields
   [webView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"document.getElementById('stud_pass').value = ('%@');", stud_pass]];
   [webView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"document.getElementById('password1').value = ('%@');", password1]];

   //Sends the form
   [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit();"];


   //See if login was sucsessfull
   if (

   } else {

   }
}

我遇到了困难,不知道如何让Webview告诉Xcode登录失败,然后根据此使Xcode产生特定输出。

1个回答

1
你在代码的“//See if login was sucsessfull”部分所假设能够做的基本问题是,这个函数会在机器时间上远早于你的UIWebView加载出显示是否登录成功的页面之前就已经返回了。这种情况是正常的,因为你的IBAction方法与UI绑定,如果用网络请求锁定该方法,则会产生很多问题。
你需要做的是,在UIWebView的委托方法中(可能是webViewDidFinishLoad:),使用stringByEvaluatingJavaScriptFromString:调用来确定您是否成功登录。由于您正在尝试登录的网站结构不同,因此该函数的实现将有很大不同。但大致如下:
-(void)webViewDidFinishLoad:(UIWebView *)webView{
    if ([webView.request.URL.absoluteString isEqualToString:@"LoginResponceURLHere"]){
        NSString *successString = [webView stringByEvaluatingJavaScriptFromString:@"SomeJavaScriptTestOfSuccess"];
        // Check successString for known responces to test.
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接