[英]Get host domain from URL?
如何从字符串 URL 获取主机域?
GetDomain 有 1 个输入“URL”,1 个 Output“域”
例子一
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
对象或Uri
对象来获取 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.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
nntp://news.contoso.com/123456@contoso.com --> nntp://news.contoso.com
文件://服务器/文件名.ext --> 文件://服务器
Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search");
Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));
尝试以下语句
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 )
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 是一个别名,因此如果您想要一个域,则不需要它。 这是我从字符串中获取真实域的 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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.