source

URL에서 호스트 도메인을 가져오시겠습니까?

manysource 2023. 7. 29. 08:34

URL에서 호스트 도메인을 가져오시겠습니까?

문자열 URL에서 호스트 도메인을 가져오는 방법은 무엇입니까?

GetDomain에는 입력 "URL" 1개, 출력 "Domain" 1개가 있습니다.

예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

사용할 수 있습니다.Request이의자Uriurl의 호스트를 가져오는 개체입니다.

Request.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

ntp://news.contoso.com/123456 @contoso.com --> ntp://news.contoso.com

파일://server/sys.ext --> 파일://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 , "");

예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

가장 좋은 방법은 사용하는 것입니다.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:)\/\/(.*?)\/");

입력 = "https://stackoverflow.com/questions/ ";

출력 = "https://stackoverflow.com/ ";

사용해 보세요.

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

support.domain.com 가 출력됩니다.

시도해 보세요.

Uri.GetLeftPart( UriPartial.Authority )

문자열을 URI 개체로 구성해야 하며 Authority 속성은 필요한 것을 반환합니다.

    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).

URI가 필요하지 않습니다.

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;
    }

WWW는 별칭이므로 도메인을 원한다면 필요하지 않습니다.문자열에서 실제 도메인을 가져오는 작은 함수입니다.

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;

    }

언급URL : https://stackoverflow.com/questions/14211973/get-host-domain-from-url