Wie überprüft man, ob eine Zeichenfolge eine gültige HTTP-URL ist?

Es gibt die Uri.IsWellFormedUriString und die Uri.TryCreate Methode, aber sie scheinen true für Dateipfade usw. zurückzugeben.

Wie überprüfe ich, ob eine Zeichenfolge eine gültige (nicht notwendigerweise aktive) HTTP-URL für die Eingabeüberprüfung ist?

Versuchen Sie dies, um HTTP-URLs zu validieren ( uriName ist der URI, den Sie testen möchten):

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

Oder wenn Sie sowohl HTTP- als auch HTTPS-URLs als gültig akzeptieren möchten (nach J0e3gans Kommentar):

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

Diese Methode funktioniert sowohl in http als auch in https. Nur eine Zeile 🙂

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

MSDN: IsWellFormedUriString

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

Verwendung:

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

UPDATE: (einzelne Zeile Code) Danke @GoClimbColorado

 public static bool CheckURLValid(this string source) => Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps; 

Verwendung:

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

Nach Uri.TryCreate können Sie Uri.Scheme überprüfen, ob es HTTP (s) gibt.

Dies würde bool zurückgeben:

 Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute) 
 Uri uri = null; if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri) return false; else return true; 

Hier ist url die Zeichenfolge, die Sie testen müssen.