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.