java怎么判断一个网站是否可以访问
1、检查URL是否正确:
URI uri= new URI(url);
如果该方法抛出异常URISyntaxException,那说明这个url不正确,但是遇到一个url地址中包含字符串^时也会抛出异常,可是这个含有^的链接却是一个有效的地址,比如百度中的某些地址,所以方法应该这样写:

2、 URL uri= new URL(incon);
URI uri= new URI(uri.getProtocol(), uri.getHost(), uri.getPath(), uri.getQuery(), null);//加上这句
测试一下带^ 符号的地址,如下图所示。

3、URL正确后,后台代码,检查链接是否能打开。
URL url;
try {
url = new URL(urlString);
URLConnection co = url.openConnection();
co.setConnectTimeout(timeOutMillSeconds);
co.connect();
System.out.println("连接可用");
} catch (Exception e1) {
System.out.println("连接打不开!");
url = null;
}

4、完整代码如下:
package Isvalide;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
/**普通类*/
public class IsValide {
public static void main(String[] args) {
try {
System.out.println(isValidUrl("http://www.baidu.com?qww^=23")+"---正确地址");
UrlWithTime("http://www.baidu.com?qww^=23",1000);
} catch (Exception e) {
System.out.println("链接不正确");
e.printStackTrace();
}
}
public static void UrlWithTime(String urlString,int timeOutMillSeconds){
long lo = System.currentTimeMillis();
URL url;
try {
url = new URL(urlString);
URLConnection co = url.openConnection();
co.setConnectTimeout(timeOutMillSeconds);
co.connect();
System.out.println("连接可用");
} catch (Exception e1) {
System.out.println("连接打不开!");
url = null;
}
System.out.println(System.currentTimeMillis()-lo);
}
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 static String isValidUrl(String incommingString) throws Exception{
URL urlObj = new URL(incommingString);
URI uriObj = new URI(urlObj.getProtocol(), urlObj.getHost(), urlObj.getPath(), urlObj.getQuery(), null);
String scheme = uriObj.getScheme();
if (!urlHasAcceptableScheme(incommingString)) {
if (scheme != null) {
throw new URISyntaxException("", "");
}
}
return incommingString;
}
}
