Получить домен хоста из URL?


как получить домен хоста из строки URL?

GetDomain имеет 1 входной "URL", 1 выходной "домен"

Example1

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

Example2

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

Example3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost
8 95

8 ответов:

можно использовать Request объект или Uri объект, чтобы получить хост url.

используя запрос.URL-адрес

string host = Request.Url.Host;

используя Uri

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

попробуйте вот так;

Uri.GetLeftPart( UriPartial.Authority )

определяет части URI для Uri.Метод GetLeftPart.


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

http://www.contoso.com/index.htm#main --> http://www.contoso.com

nntp://news.contoso.com/123456@contoso.com --> протоколы NNTP://новости.в компании Contoso.ком

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 url = new Uri(@"http://support.domain.com/default.aspx?id=12345");
Console.WriteLine(url.Host);

попробуйте следующее заявление

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

Example1

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

Example2

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

самый лучший способ, и правильный способ сделать это с помощью 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

попробуй такое

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

Он будет выводить support.domain.com

или попробовать

Uri.GetLeftPart( UriPartial.Authority )

вы должны построить свою строку как URI объект и авторитет свойство возвращает то, что вам нужно.

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;

    }