NSURLSessionTaskDelegate
NSURLSessionTaskDelegate
протокол определяет специфичные для задачи методы делегата, которые необходимо реализовать при работе с любым типом NSURLSession
задача.
Если Вы используете задачи загрузки, также реализуете методы в NSURLSessionDownloadDelegate
протокол.
Если Вы используете данные или загружаете задачи, также реализуете методы в NSURLSessionDataDelegate
протокол.
Наследование
Не применимый
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, что задача закончила передавать данные.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, tasktask
: NSURLSessionTask, didCompleteWithErrorerror
: NSError?)Objective C
- (void)URLSession:(NSURLSession *)
session
task:(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error
Параметры
session
Сеанс, содержащий задачу, запрос которой закончил передавать данные.
task
Задача, запрос которой закончил передавать данные.
error
Если ошибка произошла, ошибочный объект указание, как передача перестала работать, иначе
NULL
.Обсуждение
Об ошибках сервера не сообщают через
error
параметр. Единственные ошибки Ваш делегат получают черезerror
параметр является ошибками клиентской стороны, такими как неспособность для разрешения имени хоста или подключения к узлу.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: task:didReceiveChallenge:completionHandler:) - URLSession:task:didReceiveChallenge:completionHandler:
Учетные данные запросов от делегата в ответ на запрос аутентификации от удаленного сервера.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, tasktask
: NSURLSessionTask, didReceiveChallengechallenge
: NSURLAuthenticationChallenge, completionHandlercompletionHandler
: (NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)
session
task:(NSURLSessionTask *)task
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
Параметры
session
Сеанс, содержащий задачу, запрос которой требует аутентификации.
task
Задача, запрос которой требует аутентификации.
challenge
Объект, содержащий запрос на аутентификацию.
completionHandler
Обработчик, который должен вызвать Ваш метод делегата. Его параметры:
disposition
— Одна из нескольких констант, описывающая, как должна быть обработана проблема.credential
— Учетные данные, которые должны использоваться для аутентификации, если расположениеNSURLSessionAuthChallengeUseCredential
; иначе,NULL
.
Обсуждение
Этот метод обрабатывает запросы аутентификации уровня задачи.
NSURLSessionDelegate
протокол также обеспечивает метод делегата аутентификации сеансового уровня. Вызванный метод зависит от типа запроса аутентификации:Для проблем сеансового уровня —
NSURLAuthenticationMethodNTLM
,NSURLAuthenticationMethodNegotiate
,NSURLAuthenticationMethodClientCertificate
, илиNSURLAuthenticationMethodServerTrust
—NSURLSession
вызовы объектов делегат сеансаURLSession:didReceiveChallenge:completionHandler:
метод. Если Ваше приложение не обеспечивает метод делегата сеанса,NSURLSession
вызовы объектов делегат задачиURLSession:task:didReceiveChallenge:completionHandler:
метод для обработки проблемы.Для проблем несеансового уровня (все другие),
NSURLSession
вызовы объектов делегат сеансаURLSession:task:didReceiveChallenge:completionHandler:
метод для обработки проблемы. Если Ваше приложение предоставляет делегату сеанса, и необходимо обработать аутентификацию, то необходимо или обработать аутентификацию на уровне задачи или обеспечить обработчик уровня задачи, вызывающий обработчик на сеанс явно. Делегат сеансаURLSession:didReceiveChallenge:completionHandler:
метод не вызывают для проблем несеансового уровня.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:) - URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:
Периодически сообщает делегату прогресса передающего содержания организации к серверу.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, tasktask
: NSURLSessionTask, didSendBodyDatabytesSent
: Int64, totalBytesSenttotalBytesSent
: Int64, totalBytesExpectedToSendtotalBytesExpectedToSend
: Int64)Objective C
- (void)URLSession:(NSURLSession *)
session
task:(NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend
Параметры
session
Сеанс, содержащий задачу данных.
task
Задача данных.
bytesSent
Число байтов, отправленных с прошлого раза этот метод делегата, вызвали.
totalBytesSent
Общее количество байтов отправило до сих пор.
totalBytesExpectedToSend
Ожидаемая длина данных организации. Загрузочная система URL может определить длину данных загрузки тремя способами:
От длины
NSData
объект обеспечил как организация загрузки.От длины файла на диске, предоставленном как организация загрузки задачи загрузки (не задача загрузки).
От
Content-Length
в объекте запроса, если Вы явно устанавливаете его.
Иначе, значение
NSURLSessionTransferSizeUnknown
(-1
) если Вы обеспечили поток или объект данных организации или нуль (0
) если Вы не сделали.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, когда задача требует, чтобы новый поток организации запроса отправил к удаленному серверу.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, tasktask
: NSURLSessionTask, needNewBodyStreamcompletionHandler
: (NSInputStream!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)
session
task:(NSURLSessionTask *)task
needNewBodyStream:(void (^)(NSInputStream *bodyStream))completionHandler
Параметры
session
Сеанс, содержащий задачу, которой нужен новый поток организации.
task
Задача, которой нужен новый поток организации.
completionHandler
Обработчик завершения, который Ваш метод делегата должен вызвать с новым потоком организации.
Обсуждение
Этот метод делегата вызывают при двух обстоятельствах:
Обеспечить начальный поток организации запроса, если задача создавалась с
uploadTaskWithStreamedRequest:
Для обеспечения замены запрашивают поток организации, если задача должна снова послать запрос, имеющий поток организации из-за запроса аутентификации или другой восстанавливаемой ошибки сервера.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: task:willPerformHTTPRedirection:newRequest:completionHandler:) - URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:
Говорит делегату, что удаленный сервер запросил перенаправление HTTP.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, tasktask
: NSURLSessionTask, willPerformHTTPRedirectionresponse
: NSHTTPURLResponse, newRequestrequest
: NSURLRequest, completionHandlercompletionHandler
: (NSURLRequest!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)
session
task:(NSURLSessionTask *)task
willPerformHTTPRedirection:(NSHTTPURLResponse *)response
newRequest:(NSURLRequest *)request
completionHandler:(void (^)(NSURLRequest *))completionHandler
Параметры
session
Сеанс, содержащий задачу, запрос которой привел к перенаправлению.
task
Задача, запрос которой привел к перенаправлению.
response
Объект, содержащий ответ сервера на исходный запрос.
request
Объект URL-запроса заполнен с новым расположением.
completionHandler
Блок, что Ваш обработчик должен вызвать с любым значение
request
параметр, измененный объект URL-запроса, илиNULL
отказаться от перенаправления и возвратить организацию ответа перенаправления.Обсуждение
Этот метод вызывают только для задач в и эфемерных сеансах по умолчанию. Задачи в фоновых сеансах автоматически следуют за перенаправлениями.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.