0

这是 iOS 中 REST/Webservice 身份验证的书本示例。

我的密码错误,我进入 else 条件的第二部分,这是正确的行为。

但是[error localizedDescription]显示为空。我期待在这里显示一个错误。知道我缺少什么吗?

我明白了:

无法验证:(空)

- (void)connection:(NSURLConnection *)conn didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    if ([challenge previousFailureCount] == 0) {
        NSURLCredential *newCredential;

        newCredential = [NSURLCredential credentialWithUser:[FTKeychain loadValueForKey:IOS_USER_EMAIL]
                                                   password:[FTKeychain loadValueForKey:IOS_USER_PASSWORD]
                                                persistence:NSURLCredentialPersistenceNone];
        [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
    } else {
        [[challenge sender] cancelAuthenticationChallenge:challenge];

        // inform the user that the user name and password
        // in the preferences are incorrect
        // Why did I fail?
        NSError *error = [challenge error];
        NSLog(@"Can't authenticate: %@", [error localizedDescription]);
        // why is error localizedDescription null ?
    }
}
4

1 回答 1

0

您的服务没有返回错误。请参阅挑战的类别描述,其中指出:

讨论 如果协议不使用错误来指示身份验证失败,则此方法返回 nil。

我建议将整个对象记录为日志,如果描述稀疏,那么其他属性也是如此。

于 2013-12-01T12:59:24.363 回答