1

Javaには、Webサイトのステータス、つまりWebサイトにアクセスできるかどうかを確認できる標準ライブラリがありますか?

そうでない場合、同じことを行うサードパーティのライブラリはありますか?

4

5 に答える 5

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;
        }
      }

サイトが「稼働中」または「停止中」であることを意味すると考える応答コードは、アプリケーションによって若干異なります。(「コンテンツは禁止されています」という応答を受け取った場合、それはサイトがあなたの目的のために「アップ」していることを意味しますか?) サイトが実際に「ダウンしています」というコードを返さない限り、次のことについて決定を下す必要があります。たとえば、タイムアウトがサイトが実際にダウンしていることを表しているか、ローカルのファイアウォールの問題などを表しているかどうか。それでも、上記のいくつかの変形で十分です。

于 2012-12-08T15:05:47.393 に答える
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;
}
于 2012-12-08T15:15:37.520 に答える
1

https://hc.apache.org/のような HTTP ライブラリを使用して、リクエストを作成し、リターン コードを確認できます。

于 2012-12-08T14:59:06.390 に答える
1

jersey クライアントを使用できます ( http://www.mkyong.com/webservices/jax-rs/restful-java-client-with-jersey-client/などの多くの例)

または、org.apache.http.client を使用できます。

于 2012-12-08T15:02:18.540 に答える
1

http 呼び出しを行うことができる任意の Java ライブラリを使用できます。そのような一般的な 2 つの Java ライブラリは、HttpClientURLConnectionです。

したがって、上記のライブラリのいずれかを使用して URL のステータスを取得する必要があります。ステータスが 200 の場合、URL はアップしています。

UNIX ベースのマシンでこれを実行したい場合は、curlユーティリティでステータスを簡単に知ることができます。man on curl を実行するだけで、すべてのオプションが得られます。

于 2012-12-08T15:13:59.667 に答える