您的位置:首页 > 其它

URL结构

2016-02-13 10:59 246 查看
      从ios开发者角度来看,WorldWideWeb项目的另一项重要发明就是URL。URL为Interentnet上的任何资源与内容提供了全局唯一的位置名。最为原则,单个资源可以通过多个URL定位,但单个URL不能引用不同的资源。该规则存在例外情况,比如主机名可以指向一台模糊的主机。在IOS的URL加载系统中,NSURL对象用于管理URL对象。



       协议                        认证                                  主机名              端口
               绝对路径                     查询字符串

协议:协议部分指定了使用哪个应用层协议与服务器通信,除了HTTP外还可以使用FTP作为协议,HTTP的优势导致HTTP协议之前所使用的其它协议几乎灭绝了。IOS应用中常用的另一协议是FILE协议。FILE请求用于在应用沙箱中取得本地文件系统中的资源,如果使用字符串而没有使用协议创建NSURL对象,那么默认就会使用FILE协议。

认证:某些HTTP服务器支持在URL中传输用户认证以实现BASIC认证,图中的认证包含了用户名和密码,该格式使用的并不多,相比其它认证方法,这种认证的安全性有些低。

主机名:指定了包含请求资源的主机的TCP主机名或IP地址。如果URL协议是FILE,那么这部分与端口部分必须省略掉,之前的规则提到单个URL要引用唯一资源,不过在使用相对或本地主机名时就会出现例外情况,比如,如果使用localhost作为主机名,URL会引用本地机器。因此,不同的机器上的URL可以引用不同的资源。

端口:指定了客户端连接的TCP端口。如果省略,那么客户端就会使用特定协议的默认端口:HTTP是80,HTTPS是443,如果应用运行的设备不在你所控制的网络中,那么最好使用这些端口的值,

绝对路径:指定了网络资源的路径,就好像HTTP可以钻取为目录树一样。绝对路径可以包含任意数量的路径部分,每部分使用斜杠字符(/)分隔。绝对路径不可以包含问号,空格,回车与换行符。很多REST服务使用路径来传递值,用来唯一标识数据库中存储的实体。比如,路径/customer/456/address/0 可以指定索引为0的地址,并且具有标识456的客户。

查询字符串:指定查询内容。多个查询参数通过&字符分隔。查询字符串不可以包含空格,回车与换行符。

由于绝对路径与查询字符串的内容是受限的,因此URL通常会使用百分号进行编码,RFC 3986(http://tools.ietf.org/html/rfc3986)规定了URL百分号编码的细节信息。IOS为NSString对象提供了一个方法来执行URL的百分号编码。下面代码展示了如何对一个NSString对象进行百分号编码:

    NSString *urlString=@"http://myhost.com?query=This is a question";

   
//下面这个方法在IOS9中已经不推荐使用了

    NSString *encoded=[urlStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    //推荐使用

    NSString *emcoded1=[urlStringstringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSetURLQueryAllowedCharacterSet]];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: