在Java中,是否有标准库允许检查网站的状态,即网站是否可访问?
如果没有,是否有任何第三方库做同样的事情?
答案 0 :(得分:2)
您可以打开与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;
}
}
您认为哪些响应代码意味着网站“向上”和“向下”将略微取决于您的应用程序。 (如果你收到“禁止内容”的回复,这是否意味着该网站为了你的目的“向上”?)除非网站实际返回代码说“我失败了”,那么你需要做出决定例如,超时是否代表网站实际停机或您遇到本地防火墙等问题。但是,上述内容的某些变体应该足够了。
答案 1 :(得分:2)
您可以执行以下操作,您可以获得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;
}
答案 2 :(得分:1)
您可以使用像https://hc.apache.org/这样的HTTP库发出请求并检查返回码
答案 3 :(得分:1)
您可以使用泽西客户端(大量示例,例如http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/)
或者您可以使用org.apache.http.client。
答案 4 :(得分:1)
您可以使用任何可以进行http调用的JAVA库。两个这样流行的java库是 HttpClient 和 URLConnection 。
所以你只需要使用上述任何一个库来获取url的状态。如果状态为200则表示URL已启动。
如果您想在任何基于unix的计算机上执行此操作,则 curl 实用程序很容易知道状态。只要做一个卷曲的男人你会得到所有的选择。