0

これは、iOS での REST/Web サービス認証の本の例です。

パスワードが間違っていて、else 条件の 2 番目の部分に到達しましたが、これは正しい動作です。

ただし[error localizedDescription]、null を示します。ここにエラーが表示されることを期待していました。私が見逃しているものはありますか?

私はこれを得る:

認証できません: (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 ?
    }
}
4

1 に答える 1

0

サービスがエラーを返していません。次のように記載されている課題については、クラスの説明を参照してください。

考察 プロトコルがエラーを使用して認証の失敗を示していない場合、このメソッドは nil を返します。

オブジェクト全体としてログに記録することをお勧めします。説明がまばらな場合は、他のプロパティも同様です。

于 2013-12-01T12:59:24.363 に答える