CheckURLValid restituisce esattamente ciò che gli è stato detto.
che restituisca true su tutti e 4 gli URL qui sono i problemi
falsi: google.com
Questo è un URL relativo ed è stata specificata UriKind.Absolute che significa che questo è falso.
falso: 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
Si tratta di un protocollo HTTPS (sicuro) URL e il metodo dice
&& uriResult.Scheme == Uri.UriSchemeHttp;
che limiterà di indirizzi HTTP solo (non protetto)
Per ottenere i risultati si vuole è necessario utilizzare il seguente metodo:
public static bool CheckURLValid(string strURL)
{
Uri uriResult;
return Uri.TryCreate(strURL, UriKind.RelativeOrAbsolute, out uriResult);
}
Un'alternativa è usare semplicemente
Uri.IsWellFormedUriString(strURL, UriKind.RelativeOrAbsolute);
e non riutilizzare la funzionalità che è già pronta. Se si voleva avvolgere il vostro proprio CheckUrlValid vorrei utilizzare il seguente:
public static bool CheckURLValid(string strURL)
{
return Uri.IsWellFormedUriString(strURL, UriKind.RelativeOrAbsolute); ;
}
Il problema principale è che la maggior parte delle stringhe sono valide di URL relativo quindi vorrei evitare di usare UriKind.RelativeOrAbsolute come google.com è un URL non valido . La maggior parte dei browser Web aggiunge silenziosamente HTTP: // alla stringa per renderla un URL valido. HTTP://google.com
è un url valido.
Perché il terzo dovrebbe essere * falso *? È un URL valido e funziona davvero. –
@SriramSakthivel Ho letto la domanda come dovrebbero essere tutte vere, ma il codice mostrato restituisce i risultati sopra riportati, quindi ritengono che anche 3 dovrebbe essere valido. –
sì, si suppone di restituire true, ma in qualche modo la mia funzione lo restituisce come falso :(scusate il mio povero inglese – user3431239