如何检查Android中的URL是否有效

kid*_*lex 73 url android url-validation

有没有一种好方法可以避免崩溃应用程序的"主机未解决"错误?某种尝试连接到主机(如URL)并查看它是否有效的方法?

dd6*_*619 164

使用 URLUtil 验证URL,如下所示.

 URLUtil.isValidUrl(url)
Run Code Online (Sandbox Code Playgroud)

如果URL有效,它将返回True,如果URL无效,则返回false.

  • 更好的答案:http://stackoverflow.com/questions/5617749/how-to-validate-a-url-website-name-in-edittext-in-android/7754297 (14认同)
  • 我不会依赖这种方法,因为它不执行深度验证,只有大多数简单的WebView案例.参见[source](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.2_r1/android/webkit/URLUtil.java#URLUtil.isValidUrl%28java .lang.String%29) (6认同)
  • 似乎只要它有`http://`或`https://`它就会返回true (2认同)

Pra*_*nav 56

URLUtil.isValidUrl(url);
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可以使用:

Patterns.WEB_URL.matcher(url).matches();
Run Code Online (Sandbox Code Playgroud)


Aya*_*fov 9

我会结合使用这里和其他Stackoverflow线程中提到的方法:

private boolean isValid(String urlString) {
    try {
        URL url = new URL(urlString);
        return URLUtil.isValidUrl(url) && Patterns.WEB_URL.matcher(url).matches();
    } catch (MalformedURLException e) {

    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)


jo *_* jo 7

如果您正在使用 fromkotlin您可以创建一个String.kt并编写以下代码:

fun String.isValidUrl(): Boolean = Patterns.WEB_URL.matcher(this).matches()
Run Code Online (Sandbox Code Playgroud)

然后:

String url = "www.yourUrl.com"
if (!url.isValidUrl()) {
    //some code
}else{
   //some code
}
Run Code Online (Sandbox Code Playgroud)


And*_*ico 5

将操作包装在try/catch中.有许多方法可以使URL格式良好但不可检​​索.此外,检查主机名是否存在等测试不能保证任何内容,因为主机可能在检查后无法访问.基本上,没有任何预检查可以保证检索不会失败并抛出异常,因此您最好计划处理异常.

  • @kidalex Err,*catch*例外?什么*else*可以"处理异常"可能意味着什么? (4认同)

小智 5

只需添加这行代码:

Boolean isValid = URLUtil.isValidUrl(url) && Patterns.WEB_URL.matcher(url).matches();       
Run Code Online (Sandbox Code Playgroud)