*编辑:这不会发生在Windows上,而是发生在Mono 4.2.2 Linux(C# Online Compiler)上。
我想解析协议相对URL并获取主机名等。现在我在处理之前向头部插入“http:”,因为C#Uri类无法处理协议相关URL。你能告诉我是否有更好的方法或任何好的图书馆?
// Protocol-relative URL
var uriString = "//www.example.com/bluh/bluh.css";
var uri = new Uri(uriString);
Console.WriteLine(uriString); // "//www.example.com/bluh/bluh.css"
Console.WriteLine(uri.Host); // "Empty" string
// Absolute URL
var fixUriString = uriString.StartsWith("//") ? "http:" + uriString : uriString;
var fixUri = new Uri(fixUriString);
Console.WriteLine(fixUriString); // "http://www.example.com/bluh/bluh.css"
Console.WriteLine(fixUri.Host); // "www.example.com"
答案 0 :(得分:2)
这有效:
Uri uri = null;
if(Uri.TryCreate("//forum.xda-developers.com/pixel-c", UriKind.Absolute, out uri))
{
Console.WriteLine(uri.Authority);
Console.WriteLine(uri.Host);
}
返回
forum.xda-developers.com
forum.xda-developers.com
使用Uri(string)
构造函数对我有用。