Как правило, мне нравится просто "стрелять и забывать" с помощью метода класса NSASL sendAsynchronousRequest, используя блок обработчика завершения, но кажется, что это может быть не вариант, когда требуется аутентификация.
При использовании запроса стиля обработчика завершения следующим образом:
[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.mysite.com/"]]
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
//Do Stuff
}];
Каков правильный способ проверки подлинности? Нужно ли мне выделять и инициализировать NSURLConnection и устанавливать делегат вместо того, чтобы использовать этот стиль метода класса? Я думаю, что я понимаю, как правильно аутентифицировать функцию делегата, но я пытаюсь выяснить, могу ли я включить это в блок завершенияHandler или если есть лучший способ сделать это.
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if ([challenge previousFailureCount] > 0) {
NSLog(@"Authentication Failure");
[connection cancel];
}
else
{
NSURLCredential *credential = [NSURLCredential credentialWithUser:self.username
password:self.password
persistence:NSURLCredentialPersistenceForSession];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
}
}