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 有一定的输出。

4

1 回答 1

1

您假设您可以在//See if login was sucsessfull代码的“”部分执行的操作的基本问题是,此函数将在很久之前(机器时间)返回,您UIWebView将加载说明您是否已成功登录的页面。这应该是这样,因为您的IBAction方法与 UI 相关联,并且使用网络请求锁定该方法将是不好的。

您需要做的是通过在的委托方法stringByEvaluatingJavaScriptFromString:之一中使用调用来确定您是否成功登录,可能是. 该功能的实现将根据您尝试登录的网站的结构而有很大差异。但可能看起来像这样:UIWebViewwebViewDidFinishLoad:

-(void)webViewDidFinishLoad:(UIWebView *)webView{
    if ([webView.request.URL.absoluteString isEqualToString:@"LoginResponceURLHere"]){
        NSString *successString = [webView stringByEvaluatingJavaScriptFromString:@"SomeJavaScriptTestOfSuccess"];
        // Check successString for known responces to test.
    }
}
于 2012-10-16T19:40:22.723 回答