0
public static boolean testConnection() {
    try {
        // TODO add your handling code here:
        System.setProperty("http.proxyHost", "some proxy name");
        System.setProperty("http.proxyPort", "some port");
        URL a = new URL("http://" + Variables.serverName + ":" +           Variables.serverPort      + "/DeviceCloud");
        urlString = a.toExternalForm()+"/";
        System.out.println(urlString);
        System.out.println("http://" + Variables.serverName + ":" + Variables.serverPort + "/DeviceCloud");
        URLConnection conn = a.openConnection();
        int respCode = ((HttpURLConnection) conn).getResponseCode();
        System.out.println(respCode);
        if (respCode >= 500) {
            return false;
        } else {
            return true;
        }
    } catch (Exception ex) {
        return false;
    }
}

サーバーに到達できる場合は正常に機能します。ただし、サーバーに到達できない場合は、時間がかかることを意味します。出力は表示されませんが、実際にはサーバーマシンはクライアントからもpingを実行しています。ステータスを取得するための正しい解決策は何でしょうか

4

1 に答える 1

1

setConnectTimeout()メソッドでタイムアウトを設定できます。

try {
    HttpURLConnection httpconn = (HttpURLConnection) a.openConnection();
    httpconn.setConnectTimeout(10000); //10 seconds timeout

    return (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (SocketTimeoutException e) {
    // You can get an output here if it timed out
    return false;
}
于 2012-10-03T13:33:21.350 に答える