Решено!
Оказывается, что NSURLConnection
на самом деле вел себя правильно, то есть didReceiveAuthenticationChallenge:
вызывалось для каждой проверки подлинности.
Проблема заключалась в том, что сервер былне отправлять вызовы после первого.Это произошло потому, что сервер устанавливал cookie.
Вы можете вызвать новый вызов, просто удалив cookie.Поскольку для этого сервера нет других полезных файлов cookie, я просто удаляю их все:
- (void)clearCookiesForURL {
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [cookieStorage cookiesForURL:_URL];
for (NSHTTPCookie *cookie in cookies) {
NSLog(@"Deleting cookie for domain: %@", [cookie domain]);
[cookieStorage deleteCookie:cookie];
}
}