Java URL Value Check isUrlDownWithRetries(String url, long timeoutMs, long retryDelayMs)

Here you can find the source of isUrlDownWithRetries(String url, long timeoutMs, long retryDelayMs)

Description

Returns true if the URL status code is not 200.

License

Apache License

Parameter

Parameter Description
url The url to test.
timeoutMs The total number of milliseconds for which to keep retying.
retryDelayMs The number of milliseconds to wait between retries.

Return

True if the server is down.

Declaration

public static boolean isUrlDownWithRetries(String url, long timeoutMs, long retryDelayMs)
        throws InterruptedException 

Method Source Code


//package com.java2s;
/*//  w  w  w  . ja  v  a2s.  c o m
 * Copyright (C) 2016 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import com.google.common.io.CharStreams;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {
    /**
     * Returns true if the URL status code is not 200. Retries multiple times to see if the server
     * eventually goes down
     *
     * @param url The url to test.
     * @param timeoutMs The total number of milliseconds for which to keep retying.
     * @param retryDelayMs The number of milliseconds to wait between retries.
     * @return True if the server is down.
     */
    public static boolean isUrlDownWithRetries(String url, long timeoutMs, long retryDelayMs)
            throws InterruptedException {
        return getUrlContentWithRetries(url, timeoutMs, retryDelayMs, true) == null;
    }

    /**
     * If the response code is 200, returns the content at the URL. Otherwise, retries multiple times
     * until successful or the timeout is reached.
     *
     * @param url The url to fetch.
     * @param timeoutMs The total number of milliseconds for which to keep retying.
     * @param retryDelayMs The number of milliseconds to wait between retries.
     * @return Content at the URL or null.
     */
    public static String getUrlContentWithRetries(String url, long timeoutMs, long retryDelayMs)
            throws InterruptedException {
        return getUrlContentWithRetries(url, timeoutMs, retryDelayMs, false);
    }

    private static String getUrlContentWithRetries(String url, long timeoutMs, long retryDelayMs,
            boolean waitForFailure) throws InterruptedException {
        long totalWaitedMs = 0;
        String content = getUrlContent(url);

        while ((waitForFailure && content != null || !waitForFailure && content == null)
                && totalWaitedMs < timeoutMs) {
            long delay = Math.min(retryDelayMs, timeoutMs - totalWaitedMs);
            Thread.sleep(delay);
            totalWaitedMs += delay;
            content = getUrlContent(url);
        }

        return content;
    }

    /**
     * If the response code is 200, returns the content at the URL. Otherwise, returns null.
     */
    public static String getUrlContent(String url) {
        try {
            HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();
            int responseCode = urlConnection.getResponseCode();
            if (responseCode == 200) {
                return CharStreams.toString(new InputStreamReader(urlConnection.getInputStream()));
            }
        } catch (IOException e) {
        }
        return null;
    }
}

Related

  1. isURL(String token)
  2. isUrl(String value)
  3. isURLAccessible(String URL)
  4. isURLAvailable(String url, int timeout)
  5. isUrlAvailable(URL url, Proxy proxy)
  6. isUrlExists(String url)
  7. isURLExists(String URLName)
  8. isUrlInJar(URL url)
  9. isUrlResponding(String url)