在Mac OS X上使用Cocoa WebView的合成Web服务器

时间:2010-01-29 21:16:21

标签: cocoa delegates webview

我想创建一个Webview,我可以完全控制它加载的内容。基本上我想提供一个类的实例,它扮演URL中命名的各种Web服务器的角色。理想情况下,我会为此webview提供一个委托,它会告诉委托每个需要的URL,委托将使用MIME类型和数据进行响应。

执行此操作的一种方法是在某个自定义端口(例如2222)上运行Web服务器,并提供类似http://localhost:2222/initial/base/url的初始URL。但是,这只允许我截取同一主机上的相对URL,而不是其他主机的绝对URL。

我在文档中看到的WebView委托似乎允许用户进行高级控制,例如选择要加载哪些URL的策略,或者监视加载的进度,而不是拦截和控制数据的能力。自己被装上了。

有关如何实现此目标的任何提示?

1 个答案:

答案 0 :(得分:0)

NSURLProtocol提供此功能。您将类注册为协议(可能更好地称为协议处理程序),并且每个NSURLRequest都将路由到您,询问您是否可以处理它。你说YES然后你的对象完全控制URL加载过程。这与主URL加载引擎相关联,因此它会处理所有WebView,NSURLConnections等。有关更多指示,请参阅this question