2011-09-28 116 views

回答

291

试试这个验证的HTTP URL(uriName是URI你想测试):

Uri uriResult; 
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) 
    && uriResult.Scheme == Uri.UriSchemeHttp; 

或者,如果你想接受HTTP和HTTPS作为有效(每J0e3gan的评论)网址:

Uri uriResult; 
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) 
    && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); 
+6

如果这种阅读uriResult.Scheme而不是uriName.Scheme?我正在使用TryCreate的重载,它接受String而不是Uri,因为它是第一个参数。 –

+7

您可能需要向uriResult.Scheme ==添加更多条件...具体为https。这取决于你需要什么,但是这个小小的改变是我需要完美的工作。 – Fiarr

+8

要明确每个@ Fiarr的评论,除了HTTP URL之外,需要考虑HTTPS的“小改动”是:'bool result = Uri.TryCreate(uriName,UriKind.Absolute,out uriResult)&& uriResult.Scheme == Uri .UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;' – J0e3gan

4

经过Uri.TryCreate您可以检查Uri.Scheme以查看它是否是HTTP(s)。

0

这将返回布尔:

Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute) 
+1

我认为OP特别提到,他不喜欢Uri.IsWellFormedUriString,因为它为文件路径提供了真实性。你有解决这个问题的办法吗? – Isantipov

0
Uri uri = null; 
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri) 
    return false; 
else 
    return true; 

这里url是你必须测试的字符串。

14
public static bool CheckURLValid(this string source) 
    { 
     Uri uriResult; 
     return Uri.TryCreate(source, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp; 
    } 

用法:

string url = "htts://adasd.xc."; 
if(url.CheckUrlValid()) 
{ 
    //valid process 
} 
+0

这似乎没有处理www网址。 IE:www.google.com显示为无效。 –

+4

@ZauberParacelsus“www.google.com”无效。 URL的意思应该以“http”,“ftp”,“file”等字符开头。字符串应该是“http:// www.google.com”,不得有空格 –

53

此方法既http和https罚款。只有一行:)

if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute)) 

MSDN:IsWellFormedUriString

+4

这将对非HTTP URI返回true(即[任何其他方案](https://msdn.microsoft.com/en-us/library/system.uri.scheme(v = vs.110).aspx),如'file://'或'ldap://'。 这个解决方案应该加上一个对照计划的检查 - 例如'if(uri.Scheme!= Uri.UriSchemeHttp && uri.Scheme!= Uri.UriSchemeHttps)...' – Squiggle

+4

失败17测试在这里:https:// dotnetfiddle。净/ XduN3A – Lee

相关问题