如何验证Java中的String是否是有效的URL

lac*_*cas 44 java url

如何检查字符串是否是Java中的URL?

Gro*_*uez 55

您可以尝试从中创建一个java.net.URL对象.如果它不是正确的URL,MalformedURLException将抛出一个.

  • 为了清楚起见,如果没有指定协议,或者找到未知协议,它只会抛出MalformedURLException.与Apache的UrlValidator不同,不会执行其他验证. (4认同)
  • 这就是Javadocs所说的,但是执行了检查(你可以自己尝试,或者如果你愿意的话可以查看源代码) (2认同)

Boz*_*zho 42

您可以使用UrlValidator公地验证.它将使您免于编写通过缓存异常来引导逻辑流的代码,这通常被认为是一种不好的做法.但是,在这种情况下,如果将此功能移动到名为的实用程序方法,我认为像其他人建议的那样做很好isValidUrl(..)


Raf*_*809 13

对于Android,只需添加以下行:

boolean isValid = URLUtil.isValidUrl( "your.uri" );
Run Code Online (Sandbox Code Playgroud)


Est*_*los 9

补充Bozho答案,更加实用:

  1. 下载apache commons 并解压缩. 二进制
  2. 在java构建路径中包含commons-validator-1.4.0.jar.
  3. 使用此示例代码进行测试(参考):

    //...your imports
    
    import org.apache.commons.validator.routines.*; // Import routines package!
    
    public static void main(String[] args){
    
    // Get an UrlValidator
    UrlValidator defaultValidator = new UrlValidator(); // default schemes
    if (defaultValidator.isValid("http://www.apache.org")) {
        System.out.println("valid");
    }
    if (!defaultValidator.isValid("http//www.oops.com")) {
        System.out.println("INvalid");
    }
    
    // Get an UrlValidator with custom schemes
    String[] customSchemes = { "sftp", "scp", "https" };
    UrlValidator customValidator = new UrlValidator(customSchemes);
    if (!customValidator.isValid("http://www.apache.org")) {
        System.out.println("valid");
    }
    
    // Get an UrlValidator that allows double slashes in the path
    UrlValidator doubleSlashValidator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES);
    if (doubleSlashValidator.isValid("http://www.apache.org//projects")) {
        System.out.println("INvalid");
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行/调试


ali*_*dro 8

如果你在Android中编程,你可以android.webkit.URLUtil用来测试.

URLUtil.isHttpUrl(url)
URLUtil.isHttpsUrl(url)
Run Code Online (Sandbox Code Playgroud)

希望它会有所帮助.

  • 这实际上没有检查它是否只是一个url它只检查开头是否有http://,你需要的是URLUtil.isValidUrl(url) (10认同)

Bul*_*aza 8

干得好:

public static boolean isValidURL(String urlString)
{
    try
    {
        URL url = new URL(urlString);
        url.toURI();
        return true;
    } catch (Exception exception)
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)