【问题标题】:Which schemes does NSURL / NSURLRequest / NSURLConnection understand?NSURL / NSURLRequest / NSURLConnection 理解哪些方案?
【发布时间】:2011-01-07 18:44:37
【问题描述】:
Apple 说,NSURL 是使用 RFC 1738(和其他一些)开发的。
现在 RFC 1738 仅指定 Web URL 具有方案和方案特定部分。
我想知道 NSURL 能理解的所有方案。而且因为我将它与 NSURLRequest 和 NSURLConnection(所谓的“URL 加载器系统”)一起使用,所以我必须知道它们所理解的所有方案。
为什么?因为我只想知道。 Apple 没有在文档中详细介绍它,只是说遵守 RFC 1738。这说明了很多,也没有说明。
【问题讨论】:
标签:
cocoa
nsurlconnection
nsurl
nsurlrequest
【解决方案1】:
NSURL“支持”任何方案,因为它对如何使用相关方案一无所知。它只是一个 URL 概念的包装。
同样,NSURLRequest 不知道更多信息,但它确实有能力存储可能特定于协议的额外信息。
NSURLConnection 是您开始获得更多协议特定的地方。 NSURLConnection 能够支持您向其发送的任何 URL,前提是为此注册了合适的 NSURLProtocol 子类。但开箱即用,记录支持http:、https:、ftp: 和file:。您可以通过快速的+canHandleRequest: 呼叫对其进行测试。
根据经验,系统也支持data: URL。我已经向 Apple 提交了 radar://problem/13649313,要求他们记录下来。
【解决方案2】:
内置的 URL 协议可以处理方案http、https、file、ftp、about 和 data。
您可以定义自己的协议,使 NSURL 系统使用 NSURLProtocol 类自动处理新方案。