C#, Is there a better way to verify URL formatting than IsWellFormedUriString?

后端 未结 4 1899
夕颜
夕颜 2021-02-08 05:09

Is there a better/more accurate/stricter method/way to find out if a URL is properly formatted?

Using:

bool IsGoodUrl = Uri.IsWellForm         


        
相关标签:
4条回答
  • 2021-02-08 05:18

    This Code works fine for me to check a Textbox have valid URL format

    if((!string.IsNullOrEmpty(TXBProductionURL.Text)) && (Uri.IsWellFormedUriString(TXBProductionURL.Text, UriKind.Absolute)))
    {
         // assign as valid URL                
         isValidProductionURL = true; 
    
    }
    
    0 讨论(0)
  • 2021-02-08 05:23

    Technically, htttp://www.google.com is a properly formatted URL, according the URL specification. The NotSupportedException was thrown because htttp isn't a registered scheme. If it was a poorly-formatted URL, you would have gotten a UriFormatException. If you just care about HTTP(S) URLs, then just check the scheme as well.

    0 讨论(0)
  • 2021-02-08 05:37

    The reason Uri.IsWellFormedUriString("htttp://www.google.com", UriKind.Absolute) returns true is because it is in a form that could be a valid Uri. URI and URL are not the same.

    See: What's the difference between a URI and a URL?

    In your case, I would check that new Uri("htttp://www.google.com").Scheme was equal to http or https.

    0 讨论(0)
  • 2021-02-08 05:41

    @Greg's solution is correct. However you can steel using URI and validate all protocols (scheme) that you want as valid.

    public static bool Url(string p_strValue)
    {
        if (Uri.IsWellFormedUriString(p_strValue, UriKind.RelativeOrAbsolute))
        {
            Uri l_strUri = new Uri(p_strValue);
            return (l_strUri.Scheme == Uri.UriSchemeHttp || l_strUri.Scheme == Uri.UriSchemeHttps);
        }
        else
        {
            return false;
        }
    }
    
    0 讨论(0)
提交回复
热议问题