我们在android 和java开发中可能会遇到一个问题,就是判断用户输入的url或者从网页或其他地方复制来的url是否为一个有效的url,下面是一些方法,供大家参考:
在没有encode的情况下可以使用下面方法
URI uriObj = new URI(url);
这个方法来进行判定,如果该方法抛出异常URISyntaxException,那么就说明这个url不是一个正确的url,不过当遇到一个url地址中包含字符串^的时候,也会抛出异常,可以这个含有^的链接却是一个有效的地址,比如百度中的某些地址,因此可以通过下面的代码进行改进:
URL urlObj = new URL(url);
URI uriObj = new URI(urlObj.getProtocol(), urlObj.getHost(), urlObj.getPath(), urlObj.getQuery(), null);这两个方法分别会抛出MalformedURLException和URISyntaxException.
不过如果你想对一些schemes进行限制,可以加入以下代码:
private static final String acceptableSchemes[] = {
"http:",
"https:",
"file:"
};
private static boolean urlHasAcceptableScheme(String url) {
if (url == null) {
return false;
}
for (int i = 0; i < acceptableSchemes.length; i++) {
if (url.startsWith(acceptableSchemes[i])) {
return true;
}
}
return false;
}
private String isValidUrl(String incommingString) throws Exception{
String url = "";
URL urlObj = new URL(incommingString);
URI uriObj = new URI(urlObj.getProtocol(), urlObj.getHost(), urlObj.getPath(), urlObj.getQuery(), null);
String scheme = uriObj.getScheme();
if (!ur