4

webview を使用して Web サイトをロードしています。なんとかアプリを実行できました。しかし、私の問題は、間違ったパスワードを渡すと Web サイトをロードできず、白い画面しか表示されないことです。

正しいユーザー名/パスワードを渡すと、Web サイトが読み込まれます。認証されたユーザー名/パスワードが正しいか間違っているかを処理する方法はありますか?

私はこのコードを使用しています。

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodNTLM])
{
    NSURLCredential *credentail = [NSURLCredential
                                   credentialWithUser:@"username" 
                                   password:@"Password"
                                   persistence:NSURLCredentialPersistenceForSession];
    [[challenge sender] useCredential:credentail forAuthenticationChallenge:challenge];
}}

上記のコードには、正しいユーザー名とパスワードが含まれています。ユーザー名を「user」に、またはパスワードを「pass」に変更すると、Web サイトを読み込めなくなります。認証エラーをキャッチするにはどうすればよいですか?

ありがとう。

4

1 に答える 1

5

私はちょうどそれを見つけました。もう1つの検証を追加するだけです。[[challenge previousFailureCount] == 0.コードは次のとおりです。

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
//receive a authenticate and challenge with the user credential
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodNTLM] &&
    [challenge previousFailureCount] == 0)
{
    NSURLCredential *credentail = [NSURLCredential 
                                   credentialWithUser:@"username" 
                                   password:@"password"
                                   persistence:NSURLCredentialPersistenceForSession];


    [[challenge sender] useCredential:credentail forAuthenticationChallenge:challenge];
}
else 
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error Message" message:@"Invalid credentails" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
}

ありがとう。:)

于 2012-10-06T05:16:20.153 に答える