这是iOS中REST/Webservice身份验证的经典示例。
我的密码是错误的,我得到了其他条件的第二部分,这是正确的行为。
但是[error localizedDescription]
显示为空。我原以为这里会显示一个错误。知道我缺了什么吗?
我得到这个:
无法验证:(null)
- (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 ?
}
}
您的服务没有返回错误。请参阅挑战的类描述,其中说明:
讨论如果协议不使用错误,则此方法返回nil以指示身份验证失败。
我建议将日志记录为整个对象,如果描述是稀疏的,那么其他属性也是如此。