uri 类

独立于协议的灵活 URI 实现。 URI 实例是不可变的。 对空 URI 查询各个字段将返回空字符串。 对空 URI 查询各种诊断成员将返回 false。

警告

本主题包含有关 C++ REST SDK 1.0 (codename "Casablanca") 的信息。如果你正在从 Codeplex Casablanca 网页 使用更高版本,则使用 http://casablanca.codeplex.com/documentation 上的本地文档。

class uri;

Members

公共类

名称

描述

uri::components 类

URI 的各种组件。 此枚举用于指示哪一个 URI 组件被编码为 encode_uri_component。 这允许执行特定编码。 方案和端口不允许“%”,因此不需要对其进行编码。

公共构造函数

名称

描述

uri::uri 构造函数

已重载。 创建一个空 URI

公共方法

名称

描述

uri::authority 方法

创建授权部分与此 URI 对象相同的新 URI 对象,省略资源和查询部分。

uri::decode 方法

解码已编码的字符串。

uri::encode_data_string 方法

通过将所有字符(RFC 3986 非保留字符除外)转换为其十六进制表示形式来对字符串进行编码。

uri::encode_uri 方法

按照 RFC 3986 对 URI 组件进行编码。 请注意是否指定了完整的 URI,而不是未在非保留集中的所有字符都已转义的单独的 URI 组件。

uri::fragment 方法

获取 URI 的段组件作为已编码的字符串。

uri::has_same_authority 方法

返回其他 URI 是否具有相同的授权

uri::host 方法

获取 URI 的主机组件作为已编码的字符串。

uri::is_authority 方法

“授权”URI 是仅包含一个方案、可选用户信息、主机名和(可选)端口的 URI。

uri::is_empty 方法

空 URI 不指定任何组件,并用作默认值

uri::is_host_loopback 方法

环回 URI 是指引用仅在本地计算机上有意义的主机名或 IP 地址的 URI。

uri::is_host_portable 方法

可移植 URI 是指主机名可被全局解析(从另一条台计算机使用)的 URI。

uri::is_host_wildcard 方法

通配符 URI 是指引用解析到本地计算机的所有主机名的 URI(使用 * 或 +)

uri::is_path_empty 方法

返回此 URI 的路径部分是否为空

uri::is_port_default 方法

uri::path 方法

获取 URI 的路径组件作为已编码的字符串。

uri::port 方法

获取 URI 的端口组件。 如果未指定端口,则返回 -1。

uri::query 方法

获取 URI 的查询组件作为已编码的字符串。

uri::resource 方法

获取此 URI 的路径、查询和段部分,这些部分可能为空。

uri::scheme 方法

获取 URI 的方案组件作为已编码的字符串。

uri::split_path 方法

将路径拆分为其分层组件。

uri::split_query 方法

将查询拆分为其键值组件。

uri::to_string 方法

返回完整(已编码)URI 作为字符串。

uri::user_info 方法

获取 URI 的用户信息组件作为已编码的字符串。

uri::validate 方法

将字符串作为 URI 进行验证。

公共运算符

名称

描述

uri::operator!= 运算符

uri::operator< 运算符

uri::operator== 运算符

备注

此实现接受 URI ('https://msn.com/path') 和 URI 相对引用 ('/path?query#frag')。 此实现不提供任何特定于方案的处理 -- 以下是一个相关示例:'http://path1/path'。 这是一个有效的 URI,但不是有效的 HTTP URI -- 即,它在语法上是正确的,但不符合 HTTP 方案(HTTP 要求主机)。 我们可通过允许可插入“方案”策略类提供相关处理,可插入“方案”策略类具有额外的功能,可根据方案验证和规范 URI,还将为不同方案(因而有不用的语义)的 URI 引入类型安全层。 实现独立于方案的 URI 工具的一个问题是比较相等性。 例如,以下 URI 被视为是相同的:'https://msn.com'、'https://msn.com:80'。 即 --“默认”端口可被省略,也可是显式的。 由于我们无法将方案映射到其默认端口,因此我们无法知道它们是相同的。 这指示与方案特定的行为相关的一类问题。

要求

**标头:**base_uri.h

**命名空间:**web::http

请参见

参考

web::http 命名空间