didReceiveAuthenticationChallenge, вызывающий EXC_BAD_ACCESS
-
22-09-2019 - |
Вопрос
Если веб-сайт не требует аутентификации, мой код работает нормально, если это так, он выдает ошибку EXC_BAD_ACCESS сразу после печати "учетные данные созданы".Я ничего не выпускаю, и этот код скопирован прямо из документации - есть идеи, что не так?
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if ([challenge previousFailureCount] == 0)
{
NSLog(@"received authentication challenge");
NSURLCredential *newCredential;
newCredential=[NSURLCredential credentialWithUser:@"root"
password:@"rootpassword"
persistence:NSURLCredentialPersistenceForSession];
NSLog(@"credential created");
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
NSLog(@"responded to authentication challenge");
}
else
{
NSLog(@"previous authentication failure");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Authentication Failure"
message:@"Website did not accept the username and password."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
}
Решение
Оказывается, это как-то связано с этим конкретным методом аутентификации на сайтах - замена веб-сайта, на который я хочу войти, другим веб-сайтом, и код работает нормально.
(Я пытался очистить данные со страницы состояния unRAID, unRAID использует не реальный веб-сервер, а emhttp, поэтому я предполагаю, что это как-то связано с этим)
Другие советы
Единственное, что вы не контролируете, это возвращаемое значение [challenge sender]
.Попробуйте распечатать его описание, чтобы убедиться, что оно не равно нулю.