Java URL Read getUrlContentWithRetries(String url, long timeoutMs, long retryDelayMs)

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

Description

If the response code is 200, returns the content at the URL.

License

Apache License

Parameter

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

Return

Content at the URL or null.

Declaration

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

Method Source Code


//package com.java2s;
/*/*from  w  w  w  . j  av  a 2  s  .  com*/
 * 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 {
    /**
     * 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. getURL(final URL url)
  2. getURL(String url)
  3. getURL(URL url, String params)
  4. getUrlContent(String url)
  5. getURLContent_old(final String uri, final StringBuffer content)
  6. getUrlFollowingRedirects(String possibleRedirectionUrl)
  7. getUrlInfos(String urlAsString, int timeout)
  8. getUrlSource(String url)
  9. getUrlStatus(String url)