NSURLConnectionDelegate
NSURLConnectionDelegate
протокол определяет методы, характерные для NSURLConnectionDataDelegate
и NSURLConnectionDownloadDelegate
протоколы.
Делегаты NSURLConnection
объекты должны реализовать или данные или делегата загрузки протокол (включая методы, описанные в этом протоколе). В частности:
Если Вы используете
NSURLConnection
в сочетании с Ньюсстэндом КитомdownloadWithDelegate:
метод, класс делегата должен реализоватьNSURLConnectionDownloadDelegate
протокол.Иначе, класс делегата должен реализовать
NSURLConnectionDataDelegate
протокол.
Делегаты, хотящие выполнить пользовательскую обработку аутентификации, должны реализовать connection:willSendRequestForAuthenticationChallenge:
метод, который является предпочтительным механизмом для ответа на запросы аутентификации. (См. Ссылку класса NSURLAuthenticationChallenge для получения дополнительной информации о запросах аутентификации.), Если connection:willSendRequestForAuthenticationChallenge:
не реализован, более старые, устаревшие методы connection:canAuthenticateAgainstProtectionSpace:
, connection:didReceiveAuthenticationChallenge:
, и connection:didCancelAuthenticationChallenge:
вызываются вместо этого.
connection:didFailWithError:
если ошибка происходит во время загрузки ресурса, метод вызывают самое большее один раз. connectionShouldUseCredentialStorage:
метод вызывают один раз, непосредственно перед тем, как начинается загрузка ресурса.
Наследование
Не применимый
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.7 и позже.
-
соединение (_: willSendRequestForAuthenticationChallenge:) - connection:willSendRequestForAuthenticationChallenge:
Говорит делегату, что соединение отправит запрос для запроса аутентификации.
Объявление
Swift
optional func connection(_
connection
: NSURLConnection, willSendRequestForAuthenticationChallengechallenge
: NSURLAuthenticationChallenge)Objective C
- (void)connection:(NSURLConnection *)
connection
willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Параметры
connection
Соединение, отправляющее сообщение.
challenge
Запрос аутентификации, для которого отправляется запрос.
Обсуждение
Этот метод позволяет делегату делать обоснованное решение об аутентификации соединения сразу. Если делегат реализует этот метод, он не имеет никакой потребности реализовать
connection:canAuthenticateAgainstProtectionSpace:
илиconnection:didReceiveAuthenticationChallenge:
. Фактически, те другие методы не вызываются (за исключением более старых операционных систем, где применимо).В этом методе необходимо вызвать один из методов респондента проблемы (
NSURLAuthenticationChallengeSender
протокол):Вы могли бы также хотеть проанализировать
challenge
для схемы аутентификации и предложенных учетных данных прежде, чем вызвать aNSURLAuthenticationChallengeSender
метод. Вы никогда не должны предполагать, что присутствуют предложенные учетные данные. Можно или создать собственные учетные данные и ответить этим, или можно передать предложенные учетные данные обратно. (Поскольку этот объект является неизменным, если Вы хотите изменить его, необходимо скопировать его и затем изменить копию.)Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
соединение (_: canAuthenticateAgainstProtectionSpace:) - connection:canAuthenticateAgainstProtectionSpace:
(OS X v10.10)Отправленный, чтобы определить, в состоянии ли делегат реагировать на форму пространства защиты аутентификации.
Объявление
Swift
optional func connection(_
connection
: NSURLConnection, canAuthenticateAgainstProtectionSpaceprotectionSpace
: NSURLProtectionSpace) -> BoolObjective C
- (BOOL)connection:(NSURLConnection *)
connection
canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
Параметры
connection
Соединение, отправляющее сообщение.
protectionSpace
Пространство защиты, генерирующее запрос аутентификации.
Возвращаемое значение
YES
true
если делегат, если способный для ответа на форму пространства защиты аутентификации, иначеNO
false
.Обсуждение
Этот метод вызывают прежде
connection:didReceiveAuthenticationChallenge:
, разрешение делегату проверить пространство защиты прежде, чем попытаться аутентифицировать против него. Путем возвратаYES
true
, делегат указывает, что это может обработать форму аутентификации, к которой это делает в последующем вызовеconnection:didReceiveAuthenticationChallenge:
. Если возвращается делегатNO
false
, система пытается использовать цепочку для ключей пользователя для аутентификации. Если Ваш делегат не реализует этот метод, и пространство защиты использует клиентскую аутентификацию сертификата или аутентификацию доверия сервера, система ведет себя, как будто Вы возвратилисьNO
false
. Система ведет себя, как будто Вы возвратилисьYES
true
для всех других методов аутентификации.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
Осуждаемый в OS X v10.10.
Доступный как часть неофициального протокола до OS X v10.7.
-
соединение (_: didCancelAuthenticationChallenge:) - connection:didCancelAuthenticationChallenge:
(OS X v10.10)Отправленный, когда соединение отменяет запрос аутентификации.
Объявление
Swift
optional func connection(_
connection
: NSURLConnection, didCancelAuthenticationChallengechallenge
: NSURLAuthenticationChallenge)Objective C
- (void)connection:(NSURLConnection *)
connection
didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Параметры
connection
Соединение, отправляющее сообщение.
challenge
Отмененная проблема.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.10.
Доступный как часть неофициального протокола до OS X v10.7.
-
соединение (_: didReceiveAuthenticationChallenge:) - connection:didReceiveAuthenticationChallenge:
(OS X v10.10)Отправленный, когда соединение должно аутентифицировать проблему для загрузки ее запроса.
Объявление
Swift
optional func connection(_
connection
: NSURLConnection, didReceiveAuthenticationChallengechallenge
: NSURLAuthenticationChallenge)Objective C
- (void)connection:(NSURLConnection *)
connection
didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
Параметры
connection
Соединение, отправляющее сообщение.
challenge
Проблема это
connection
должен аутентифицировать для загрузки его запроса.Обсуждение
Этот метод дает делегату возможность определить план действий, взятый для проблемы: обеспечьте учетные данные, продолжайте, не обеспечивая учетные данные или отмените запрос аутентификации и загрузку.
Делегат может определить число предыдущих запросов аутентификации путем отправки сообщения
previousFailureCount
кchallenge
.Если предыдущее число отказов 0 и значение, возвращенное
proposedCredential
nil
, делегат может создать новый объект NSURLCredential, предоставив информацию, определенную для типа учетных данных, и отправить auseCredential:forAuthenticationChallenge:
сообщение к[challenge sender]
, передача учетных данных иchallenge
как параметры. ЕслиproposedCredential
неnil
, значение является учетными данными от URL или совместно используемого учетного хранения, которое может быть предоставлено для пользователя как обратная связь.Делегат может решить отказаться от дальнейших попыток аутентификации в любое время путем отправки
[challenge sender]
acontinueWithoutCredentialForAuthenticationChallenge:
или acancelAuthenticationChallenge:
сообщение. Определенное действие является зависящим от реализации.Если делегат реализует этот метод, то загрузка приостановит до
[challenge sender]
отправляется одно из следующих сообщений:useCredential:forAuthenticationChallenge:
,continueWithoutCredentialForAuthenticationChallenge:
илиcancelAuthenticationChallenge:
.Если делегат не реализует этот метод, реализация по умолчанию используется. Если допустимые учетные данные для запроса предоставлены как часть URL или доступны от NSURLCredentialStorage
[challenge sender]
отправляется auseCredential:forAuthenticationChallenge:
с учетными данными. Если проблема не имеет никаких учетных данных, или учетным данным не удается авторизовать доступ, тоcontinueWithoutCredentialForAuthenticationChallenge:
отправляется в[challenge sender]
вместо этого.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.10.
Доступный как часть неофициального протокола до OS X v10.7.
-
Отправленный, чтобы определить, должен ли загрузчик URL использовать учетное хранение для аутентификации соединения.
Объявление
Swift
optional func connectionShouldUseCredentialStorage(_
connection
: NSURLConnection) -> BoolObjective C
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)
connection
Параметры
connection
Соединение, отправляющее сообщение.
Обсуждение
Этот метод вызывают, прежде чем любая попытка аутентифицировать предпринята.
Если Вы возвращаетесь
NO
false
, соединение не консультируется с учетным хранением автоматически и не хранит учетные данные. Однако в Вашемconnection:didReceiveAuthenticationChallenge:
метод, можно консультироваться с учетным хранением сами и сохранить учетные данные сами по мере необходимости.Не реализация этого метода совпадает с возвратом
YES
true
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.6 и позже.
Доступный как часть неофициального протокола до OS X v10.7.
-
Отправленный, когда связь прерывается загрузить свой запрос успешно.
Объявление
Swift
optional func connection(_
connection
: NSURLConnection, didFailWithErrorerror
: NSError)Objective C
- (void)connection:(NSURLConnection *)
connection
didFailWithError:(NSError *)error
Параметры
connection
Соединение, отправляющее сообщение.
error
Ошибочный объект, содержащий подробные данные того, почему связь прервалась загрузить запрос успешно.
Обсуждение
Как только делегат получает это сообщение, оно не получит дальнейших сообщений для
connection
.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
Доступный как часть неофициального протокола до OS X v10.7.