用Java检查网站状态

时间:2012-12-08 14:56:14

标签: java web

在Java中,是否有标准库允许检查网站的状态,即网站是否可访问?

如果没有,是否有任何第三方库做同样的事情?

5 个答案:

答案 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 实用程序很容易知道状态。只要做一个卷曲的男人你会得到所有的选择。