Uri 类

定义

定义一个 对象,该对象表示统一资源标识符 (URI) 值,并将其分析为组件。 Uri 对象由许多其他不一定局限于 Web 浏览器方案的Windows 运行时 API 使用。

。网 使用 .NET 编程时,此类型是隐藏的,开发人员应使用 System.Uri。 请参阅“备注”。

public ref class Uri sealed : IStringable
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.IUriRuntimeClassFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class Uri final : IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Foundation.IUriRuntimeClassFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class Uri final : IStringable
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.IUriRuntimeClassFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class Uri : IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Foundation.IUriRuntimeClassFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class Uri : IStringable
function Uri(baseUri, relativeUri)
Public NotInheritable Class Uri
Implements IStringable
继承
Object Platform::Object IInspectable Uri
属性
实现

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

此示例创建一个 Uri 对象,该对象代表使用 http 协议访问网站的统一资源标识符 (URI) 。

// The URI string
var uriToLaunch = "http://www.bing.com";

// Create a Uri object from the URI string
var uri = new Windows.Foundation.Uri(uriToLaunch);
// The URI string.
std::wstring uriToLaunch{ L"http://www.bing.com" };

// Create a Uri object from the URI string.
Windows::Foundation::Uri uri{ uriToLaunch };
// The URI string
var uriToLaunch = L"http://www.bing.com";

// Create a Uri object from the URI string
auto uri = ref new Windows::Foundation::Uri(uriToLaunch);

此示例创建一个 URI,该 URI 使用 ms-appx 协议访问应用包中的图像文件。

// The URI string
var uriImage = "ms-appx:///images/SecondaryTileDefault-sdk.png";

// Create a Uri object from the URI string
var uri = new Windows.Foundation.Uri(uriImage);
// The URI string.
std::wstring uriImage{ L"ms-appx:///images/SecondaryTileDefault-sdk.png" };

// Create a Uri object from the URI string.
Windows::Foundation::Uri uri{ uriImage };
// The URI string
var uriImage = ;

// Create a Uri object from the URI string
auto uri = ref new Windows::Foundation::Uri(uriImage);

此示例创建一个 URI,该 URI 使用 ms-appdata 协议访问应用的本地应用数据存储中的文件。

// The URI string
var uriFile = "ms-appdata:///local/file.ext";

// Create a Uri object from the URI string
var uri = new Windows.Foundation.Uri(uriFile);
// The URI string.
std::wstring uriFile{ L"ms-appdata:///local/file.ext" };

// Create a Uri object from the URI string.
Windows::Foundation::Uri uri{ uriFile };
// The URI string
var uriFile = "ms-appdata:///local/file.ext";

// Create a Uri object from the URI string
auto uri = ref new Windows::Foundation::Uri(uriFile);

注解

重要

使用 .NET 编程时,此类是隐藏的,开发人员应使用 System.Uri 类,该类使用 RFC 3987 规则对统一资源标识符 (URI) 进行编码和解码。 Windows.Foundation.Uri 类不会对统一资源标识符 (URI 中的非 ASCII 字符进行百分比编码,) 方案引用 windows 文件路径 (,例如 ms-appx:) 。 Windows.Foundation.Uri 还使用用户的当前代码页解释百分比编码。

System.Uri 的可用成员与 Windows.Foundation.Uri 的成员相似但不同,本主题中所述的一些基本行为也不同。 有关编码差异和可用成员的详细信息,请参阅 System.Uri (特别是备注) 。

下面是统一资源标识符 (URI) 示例部分的细分:

scheme://usernamepassword@hostport/path扩展查询#片段

例如:

http://msdn.microsoft.com/library/windows/apps/windows.foundation.uri.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1

在此示例中:

  • 方案http
  • 主机msdn.microsoft.com
  • (microsoft.com主机) 的子集
  • 扩展aspx
  • 查询cs-save-lang=1&cs-lang=cpp
  • 片段code-snippet-1

注意

主机前面的 usernamepassword@ 主要与文件传输协议 (FTP) 统一资源标识符 (URI) 相关。 文件传输协议 (FTP) URI 在 Windows 运行时 中支持有限;请参阅 HTML 或XAML) (“在后台传输数据”。

重要

并非所有可能的方案都可供Windows 运行时应用使用。 值得注意的是,文件: 方案被阻止。 可以创建一个 Uri 对象,该对象使用Windows 运行时应用不支持的方案,当你尝试将 Uri 应用为 API 调用的输入值时,而不是在创建对象时,你会被阻止。

特定于Windows 运行时应用的 URI 方案

Windows 运行时具有多个Windows 运行时应用独有的方案,这些方案是指属于应用的资产。 通常,可以使用这些方案来代替文件:方案,以引用已打包的文件和已作为应用包的一部分包含的其他资产,或与已安装的应用关联的资产:

其中每个方案都会忽略统一资源标识符 (URI) 的许多组件部分,这些组件适用于其他方案, (例如 查询片段) 。 此外,某些组件是显式禁止的,并导致使用这些方案的 Uri 值被视为无效的输入 (例如 ms-appx 中的 UserNamePassword 值:Uri 方案将使 uri) 失效。 有关详细信息,请参阅 URI 方案

在大多数情况下, (示例 (将这些方案与三个斜杠一起使用:ms-appx:///page.html) ,它引用当前应用的根,使用当前应用作为颁发机构。 使用两个斜杠是可能的,但可能需要显式指定颁发机构名称。 带两个斜杠的用法可以将包依赖项称为颁发机构,也可以引用应用中的相对位置。 有关详细信息,请参阅 URI 方案

绝对 URI 和相对 URI

在代码级别,Windows 运行时不支持相对统一资源标识符 (URI) 。 创建的所有 Uri 对象都必须表示绝对统一资源标识符 (URI) 。 上一部分中列出的方案实际上是绝对统一资源标识符 (URI) ,因为主机和颁发机构对于每个方案都是隐式的,路径的其余部分在该授权下进行评估。

按 URI 方案启动应用

Uri 值的统一资源标识符 (URI) 方案可用于启动与该特定方案关联的其他应用。 有关详细信息,请参阅 启动 URI) 的默认应用

构造函数

Uri(String)

从指定的统一资源标识符 (URI) 字符串初始化新的 Uri 对象。 初始化 URI 还会分析字符串,并填充表示统一资源标识符的 Uri 属性 (URI) 组件。

Uri(String, String)

通过将基本 一资源标识符 (URI) 与相对统一资源标识符 (URI) 相结合来初始化新 URI。 初始化 URI 还会分析组合字符串,并填充表示统一资源标识符的 Uri 属性 (URI) 组件。

属性

AbsoluteCanonicalUri

获取当前 URI 的完全规范 RFC 兼容表示形式。

AbsoluteUri

根据 Windows.Foundation.Uri 编码行为,获取整个非规范 URI (它是非规范 URI,因为它实际上可能是一个 IRI;请参阅 Remarks.) 。

DisplayIri

获取构成当前 URI 的解码 unicode 字符。

DisplayUri

获取可用于显示目的的统一资源标识符 (URI) 的表示形式。

Domain

从统一资源标识符 (URI) 获取域名组件(包括顶级域)。

Extension

获取 URI 中引用的资源的文件扩展名。

Fragment

获取片段标记 (#) 后面的文本,包括片段标记本身。

Host

获取完全限定的域名。

Password

获取存储在此 URI 实例中的统一资源标识符 (URI) 的密码组件。

Path

获取 存储在此 URI 实例中的统一资源标识符 (URI) 的路径和资源名称组件。

Port

获取存储在此 URI 实例中的统一资源标识符 (URI) 的端口号组件

Query

获取 存储在此 URI 实例中的统一资源标识符 (URI) 的查询字符串组件。

QueryParsed

获取查询字符串) URI (分析的统一资源标识符。

RawUri

获取整个原始统一资源标识符 (URI) 字符串,用于在分析之前构造此 Uri 对象,但不应用任何编码。

SchemeName

获取存储在此 URI 实例中的统一资源标识符 (URI) 的协议方案名称组件

Suspicious

获取一个值,该值指示分析是否确定统一资源标识符 (URI) 格式不正确。

UserName

获取存储在此 URI 实例中的统一资源标识符 (URI) 的用户名组件。

方法

CombineUri(String)

将指定的统一资源标识符 (URI) 添加到当前 URI

Equals(Uri)

确定指定的 Uri 对象是否等于当前 Uri 对象。

EscapeComponent(String)

将统一资源标识符 (URI) 字符串转换为其转义表示形式。

ToString()

获取当前 Uri 的规范字符串表示形式。

UnescapeComponent(String)

转换指定的字符串,方法是将任何转义序列替换为相应的未转义表示形式。

适用于

另请参阅