am besten URL-überprüfung
im code verwenden, wie unten zu überprüfen, für die URL Validierung:
public static bool CheckURLValid(string strURL)
{
Uri uriResult;
return Uri.TryCreate(strURL, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp;
}
Das Ergebnis wie unten sollten alle zeigen, wie wahr, aber irgendwie hat es seinen eigenen Muster zum überprüfen der url:
false: google.com
wahr: http://www.google.com
wahr: https://stackoverflow.com/questions/ask
im mit c#, wie Sie zu verbessern diese Prüfung url-Validierung um genauer zu sein?
- Warum Dritte soll falsch sein ? Es ist eine gültige URL und es funktioniert tatsächlich.
- Ich lese die Frage so, wie Sie sollten alle richtig sein, aber der code gibt die oben genannten Ergebnisse, so dass Sie glauben, dass 3 gültig sein soll auch.
- ja, er nehme an, um true zurückzugeben, aber irgendwie ist meine Funktion zurückgeben es als falsch 🙁 sorry für mein schlechtes Englisch
- Oops. Falsch gelesen es. Danke.
- haben Sie sich an Uri.IsWellFormedUriString? Es sieht aus wie Sie sind nur neu, es umzusetzen. auch für die #3 es ist wieder falsch, weil die Kontrolle für HTTP mit
&& uriResult.Scheme == Uri.UriSchemeHttp
. #3 httpS - bitte siehe meine Antwort auf Tonci ' s Antwort 🙂
- Ich sah es und nur aktualisiert, mit mehr info.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre CheckURLValid ist wieder genau das, was Sie gesagt haben, es.
True zurückliefern, auf alle 4 URLs hier sind die Fragen
false: google.com
Dies ist ein relativer url, und Sie angegeben haben, UriKind.Absolute was bedeutet, dass diese falsch ist.
false: https://www.google.com.my/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#newwindow=1&q=check%20if%20valid%20url%20c%23
Dies ist einer (Sicheren) httpS-url und Ihre Methode sagt
begrenzt, dass Sie nur http-Adressen (NICHT sicher)
Erhalten die Ergebnisse, die Sie wollen, müssen Sie die folgende Methode verwenden:
Alternative ist, um Sie nur
und nicht neu zu implementieren Funktionalität, die alle bereit vorhanden ist. Wenn Sie wollte, wickeln Sie es Ihren eigenen CheckUrlValid würde ich Folgendes verwenden:
Das Hauptproblem ist, dass die meisten Zeichenfolgen sind gültige relative URL ' s, also ich würde vermeiden, mit UriKind.RelativeOrAbsolute als google.com wird eine ungültige url. Die meisten web-Browser schweigend fügen Sie http://to string, damit es eine gültige url.
HTTP://google.com
ist eine gültige url.Können Sie versuchen,
Gibt es wahr auf allen vier Saiten, die Sie schrieb in Ihrer Frage.
Dies ist die beste Lösung ohne Verwendung von Regex:
(beachten Sie, dass zum Beispiel mit nur "IsWellFormedUriString", wird true zurückgegeben, für "//")
Für unit-Tests können Sie überprüfen,link, wo meine Funktion hast schöne Ergebnisse.