Cookie и пользовательские протоколы
Если Ваше приложение должно управлять cookie программно, такими как добавление и удаление cookie или определение, какие cookie должны быть приняты, считайте Хранение Cookie.
Если Ваше приложение должно поддерживать ОСНОВАННЫЙ НА URL протокол это NSURL
не поддерживает исходно, можно зарегистрировать собственный класс протокола, обеспечивающий нуждавшийся в поддержке. Для узнавания больше считайте Поддержку протоколов.
Хранение cookie
Вследствие природы не сохраняющей состояние протокола HTTP клиенты часто используют cookie для обеспечения персистентного хранения данных через URL-запросы. Загрузочная система URL обеспечивает интерфейсы, чтобы создать и управлять cookie, отправить cookie как часть Запроса HTTP и получить cookie при интерпретации ответа веб-сервера.
NSHTTPCookie
класс инкапсулирует cookie, обеспечивая средства доступа для многих общих атрибутов cookie. Этот класс также обеспечивает методы для преобразования заголовков cookie HTTP в NSHTTPCookie
экземпляры и преобразовывают NSHTTPCookie
экземпляр к заголовкам, подходящим для использования с NSURLRequest
объект. Загрузочная система URL автоматически отправляет любые сохраненные cookie, подходящие для NSURLRequest
возразите, если запрос не указывает для не отправки cookie. Аналогично, cookie возвратились в NSURLResponse
объект принят в соответствии с текущей политикой принятия cookie.
NSHTTPCookieStorage
класс обеспечивает интерфейс для управления набором NSHTTPCookie
объекты совместно используются всеми приложениями.
NSHTTPCookieStorage
позволяет приложению указывать политику принятия cookie. Политика принятия cookie управляет, должны ли cookie всегда приниматься, никогда не быть принятыми, или приниматься только от того же домена как основной документ URL.
Когда другой изменения приложений хранение cookie или политика принятия cookie, NSHTTPCookieStorage
уведомляет приложение путем регистрации NSHTTPCookieManagerCookiesChangedNotification
и NSHTTPCookieStorageAcceptPolicyChangedNotification
уведомления.
Для получения дополнительной информации посмотрите Ссылку класса NSHTTPCookieStorage и Ссылку класса NSHTTPCookie.
Поддержка протоколов
Проект загрузочной системы URL позволяет клиентскому приложению расширять протоколы, поддерживающиеся для передачи данных. Загрузочная система URL исходно поддерживает http
, https
, file
, ftp
, и data
протоколы.
Можно реализовать пользовательский протокол путем разделения на подклассы NSURLProtocol
и затем регистрируя новый класс в загрузочной системе URL с помощью NSURLProtocol
метод класса registerClass:
. Когда NSURLSession
, NSURLConnection
, или NSURLDownload
объект инициирует соединение для NSURLRequest
объект, загрузочная система URL консультируется с каждым из зарегистрированных классов в обратном порядке их регистрации. Возвращающийся первый класс YES
для a canInitWithRequest:
сообщение используется для обрабатывания запроса.
Если Ваш пользовательский протокол требует дополнительных свойств для своих запросов или ответов, Вы поддерживаете их путем создания категорий на NSURLRequest
, NSMutableURLRequest
, и NSURLResponse
классы, обеспечивающие средства доступа для тех свойств. NSURLProtocol
класс обеспечивает методы для установки и получения значений свойств в тех средствах доступа.
Загрузочная система URL ответственна за создание и выпуск NSURLProtocol
экземпляры, когда соединения запускаются и завершаются. Ваше приложение никогда не должно создавать экземпляр NSURLProtocol
непосредственно.
Когда NSURLProtocol
подкласс инициализируется загрузочной системой URL, ему предоставлены объект клиента, соответствующий NSURLProtocolClient
протокол. NSURLProtocol
подкласс отправляет сообщения от NSURLProtocolClient
протокол к объекту клиента для информирования загрузочной системы URL о его действиях, поскольку это создает ответ, получает данные, перенаправления к новому URL, требует аутентификации и завершает загрузку. Если пользовательский протокол поддерживает аутентификацию, то это должно соответствовать NSURLAuthenticationChallengeSender
протокол.
Для получения дополнительной информации см. Ссылку класса NSURLProtocol.