从 URL 获取主机域名?

如何从一个字符串 URL 获得主机域?

GetDomain 有1个输入“ URL”,1个输出“ Domain”

例子1

INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com

例子2

INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com

例子3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
265469 次浏览

您可以使用 Request对象或 Uri对象来获取 URL 的主机。

使用 请求

string host = Request.Url.Host;

使用 < strong > Uri

Uri myUri = new Uri("http://www.contoso.com:8080/");
string host = myUri.Host;  // host is "www.contoso.com"

试试这个

Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));

它将输出 support.domain.com

或者试试

Uri.GetLeftPart( UriPartial.Authority )

使用 尤里类和 主持人属性

Uri url = new Uri(@"http://support.domain.com/default.aspx?id=12345");
Console.WriteLine(url.Host);

试试这样;

Uri.GetLeftPart( UriPartial.Authority )

定义 URI.GetLeftPart 方法的 URI 部分。


Http://www.contoso.com/index.htm?date=today http://www.contoso.com

Http://www.contoso.com/index.htm#main http://www.contoso.com

News.contoso.com/123456@contoso.com news.contoso.com

File://server/filename.ext —— > file://server

Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search");
Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));

Demo

您应该将字符串构造为 URI对象,并且 权威属性返回您需要的内容。

试试下面这句话

 Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
string pathQuery = myuri.PathAndQuery;
string hostName = myuri.ToString().Replace(pathQuery , "");

例子1

 Input : http://localhost:4366/Default.aspx?id=notlogin
Ouput : http://localhost:4366

例子2

 Input : http://support.domain.com/default.aspx?id=12345
Output: support.domain.com

WWW 是一个别名,所以你不需要它,如果你想要一个域名。 下面是我的 litllte 函数,用于从字符串中获取真正的域

private string GetDomain(string url)
{
string[] split = url.Split('.');
if (split.Length > 2)
return split[split.Length - 2] + "." + split[split.Length - 1];
else
return url;


}

最好的方法,正确的方法是使用 Uri.Authority字段

像这样载入和使用 Uri:

Uri NewUri;


if (Uri.TryCreate([string with your Url], UriKind.Absolute, out NewUri))
{
Console.Writeline(NewUri.Authority);
}


Input : http://support.domain.com/default.aspx?id=12345
Output : support.domain.com


Input : http://www.domain.com/default.aspx?id=12345
output : www.domain.com


Input : http://localhost/default.aspx?id=12345
Output : localhost

如果您想操作 Url,使用 Uri 对象是最好的方法。 Https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx

 var url = Regex.Match(url, @"(http:|https:)\/\/(.*?)\/");

INPUT = “ https://stackoverflow.com/questions/" ;

输出 = “ https://stackoverflow.com/" ;

    public static string DownloadImage(string URL, string MetaIcon,string folder,string name)
{
try
{
WebClient oClient = new WebClient();


string LocalState = Windows.Storage.ApplicationData.Current.LocalFolder.Path;


string storesIcons = Directory.CreateDirectory(LocalState + folder).ToString();


string path = Path.Combine(storesIcons, name + ".png");


            

//si la imagen no es valida ej "/icon.png"
if (!TextBoxEvent.IsValidURL(MetaIcon))
{
Uri uri = new Uri(URL);
string DownloadImage = "https://" + uri.Host + MetaIcon;


oClient.DownloadFile(new Uri(DownloadImage), path);
}
//si la imagen tiene todo ej https://www.mercadolibre.com/icon.png
else
{
oClient.DownloadFile(new Uri(MetaIcon), path);
}


return path;
}
catch (Exception ex)
{
return ex.ToString();
}
}

这里有一个适用于所有类型 URL 的解决方案。

public string GetDomainFromUrl(string url)
{
url = url.Replace("https://", "").Replace("http://", "").Replace("www.", ""); //Remove the prefix
string[] fragments = url.Split('/');
return fragments[0];
}

它将只采取域名(Www.bla.com-> bla)

不需要尤里

static string GetDomainNameOnly(string s)
{
string domainOnly = "";
if (!string.IsNullOrEmpty(s))
{
if (s.Contains("."))
{
string domain = s.Substring(s.LastIndexOf('.', s.LastIndexOf('.') - 1) + 1);
string countryDomain = s.Substring(s.LastIndexOf('.'));
domainOnly = domain.Replace(countryDomain, "");
}
else
domainOnly = s;
}
return domainOnly;
}