C#,有没有比IsWellFormedUriString验证URL格式更好的方法?
是否有更好/更准确/更严格的方法/方法来查明URL是否格式正确?
使用:
bool IsGoodUrl = Uri.IsWellFormedUriString(url, UriKind.Absolute);
不抓住一切。 如果我输入htttp://www.google.com
并运行该过滤器,它会通过。 然后,当我调用WebRequest.Create
时,我得到一个NotSupportedException
WebRequest.Create
。
这个不好的网址也会通过下面的代码(这是唯一可以找到的其他过滤器):
Uri nUrl = null;
if (Uri.TryCreate(url, UriKind.Absolute, out nUrl))
{
url = nUrl.ToString();
}
Uri.IsWellFormedUriString("htttp://www.google.com", UriKind.Absolute)
返回true的原因是因为它的形式可能是有效的Uri。 URI和URL不相同。
请参阅:URI和URL之间有什么区别?
在你的情况下,我会检查new Uri("htttp://www.google.com").Scheme
等于http
或https
。
技术上,根据URL规范, htttp://www.google.com
是格式正确的网址。 NotSupportedException
被抛出,因为htttp
不是注册方案。 如果这是一个格式不正确的URL,您将得到一个UriFormatException
。 如果你只关心HTTP(S)URL,那么只需检查该方案。
格雷格的解决方案是正确的。 但是,您可以使用URI来验证所有协议(方案),并将其视为有效。
public static bool Url(string p_strValue)
{
if (Uri.IsWellFormedUriString(p_strValue, UriKind.RelativeOrAbsolute))
{
Uri l_strUri = new Uri(p_strValue);
return (l_strUri.Scheme == Uri.UriSchemeHttp || l_strUri.Scheme == Uri.UriSchemeHttps);
}
else
{
return false;
}
}
链接地址: http://www.djcxy.com/p/12119.html
上一篇: C#, Is there a better way to verify URL formatting than IsWellFormedUriString?
下一篇: Is there a way to have index.html functionality with content hosted on S3?