12

URL が適切にフォーマットされているかどうかを確認するための、より優れた/より正確な/より厳密な方法/方法はありますか?

使用:

bool IsGoodUrl = Uri.IsWellFormedUriString(url, UriKind.Absolute);

すべてをキャッチするわけではありません。htttp://www.google.comそのフィルターを入力して実行すると、合格します。NotSupportedExceptionその後、 を呼び出すと後で取得しWebRequest.Createます。

この悪い URL は、次のコード (私が見つけた他の唯一のフィルターです) も通過します。

Uri nUrl = null;
if (Uri.TryCreate(url, UriKind.Absolute, out nUrl))
{
    url = nUrl.ToString(); 
}
4

4 に答える 4

13

true が返される理由Uri.IsWellFormedUriString("htttp://www.google.com", UriKind.Absolute)は、有効な Uri になる可能性のある形式であるためです。URI と URL は同じではありません。

参照: URI と URL の違いは何ですか?

あなたの場合、それがまたはnew Uri("htttp://www.google.com").Schemeに等しいことを確認します。httphttps

于 2011-04-12T00:52:25.783 に答える
8

技術的には、 URL 仕様htttp://www.google.comに従って適切にフォーマットされたURLです。は登録されたスキームではないため、スローされました。URL の形式が適切でない場合は、. HTTP(S) URL だけに関心がある場合は、スキームも確認してください。NotSupportedExceptionhtttpUriFormatException

于 2011-04-12T00:49:00.323 に答える