Синтетический веб-сервер с Cocoa WebView в Mac OS X - PullRequest
2 голосов
/ 30 января 2010

Я хотел бы создать веб-представление, где бы я мог полностью контролировать загружаемый контент. По сути, я хочу предоставить экземпляр класса, который играет роль различных веб-серверов, указанных в URL-адресах. В идеале я бы предоставил этому веб-представлению делегата, и он бы сообщал делегату каждый URL, который ему требуется, и делегат отвечал бы с типом MIME и данными.

Один из способов сделать это состоит в том, чтобы буквально иметь веб-сервер, работающий на каком-то настраиваемом порту (скажем, 2222), и указать исходный URL-адрес, например http://localhost:2222/initial/base/url. Однако это позволяет мне перехватывать только относительные URL-адреса на одном хост, а не абсолютные URL-адреса других хостов.

Представители WebView, которые я видел в документации, по-видимому, позволяют пользователю осуществлять высокоуровневый контроль, например, выбирать политику для загрузки URL-адресов или отслеживать ход загрузки, но не возможность перехватывать и контролировать данные, которые загружается сам.

Любые намеки на то, как я мог бы достичь этой цели?

1 Ответ

0 голосов
/ 30 января 2010

NSURLProtocol выполняет эту функцию. Вы регистрируете свой класс как протокол (возможно, лучше называемый обработчиком протокола), и каждый NSURLRequest будет направляться вам, чтобы спросить, можете ли вы его обработать. Вы говорите «ДА», и тогда ваш объект полностью контролирует процесс загрузки URL. Это связано с основным механизмом загрузки URL, поэтому он заботится обо всех WebViews, NSURLConnections и т. Д. См. этот вопрос , чтобы узнать больше указателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...