在 Java 中,是否有允许检查网站状态的标准库,即该网站是否可访问?
如果没有,是否有任何第三方库可以做同样的事情?
您可以打开与 URL 的连接并检索响应代码和(可选)内容:
public static boolean isSiteUp(URL site) {
try {
HttpURLConnection conn = (HttpURLConnection) site.openConnection();
conn.getContent();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
return true;
}
return false;
} catch (SocketTimeoutException tout) {
return false;
} catch (IOException ioex) {
// You may decide on more specific behaviour...
return false;
}
}
您认为哪些响应代码表示该站点“向上”和“向下”将稍微取决于您的应用程序。(如果您收到“内容禁止”响应,这是否意味着该站点出于您的目的“已启动”?)除非该站点实际上返回代码说“我已关闭”,否则您需要做出决定例如,超时是否表示站点实际上已关闭,或者您有本地防火墙问题等。但是,上述的一些变体应该就足够了。
您可以执行以下操作,您可以在其中获得响应,200
即可访问,否则无法访问
public static boolean isAccessable(String url, int timeout) {
url = url.replaceFirst("https", "http"); // Otherwise an exception may
// be thrown on invalid SSL
// certificates.
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url)
.openConnection();
connection.setConnectTimeout(timeout);
connection.setReadTimeout(timeout);
connection.setRequestMethod("HEAD");
int responseCode = connection.getResponseCode();
if (responseCode != 200) {
return false;
}
} catch (IOException exception) {
return false;
}
return true;
}
您可以使用https://hc.apache.org/之类的 HTTP 库发出请求并检查返回码
您可以使用 jersey 客户端(大量示例,例如http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/)
或者你可以使用 org.apache.http.client。
您可以使用任何可以进行 http 调用的 JAVA 库。两个这样流行的 java 库是HttpClient和URLConnection。
因此,您只需要使用上述任一库获取 url 的状态。如果状态为 200,则 URL 已启动。
如果您想在任何基于 unix 的机器上执行此操作,那么curl实用程序很容易知道状态。只要做一个男人卷曲你就会得到所有的选择。