欢迎使用CSDN-markdown编辑器
来源:互联网 发布:众途软件多少钱 编辑:程序博客网 时间:2024/06/06 10:04
直接上代码,效果还不错。
import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.nio.charset.Charset;/** * @author Crunchify.com */public class CrunchifyRetryNTimes { public static void main(String[] args) { // Execute this Program as it is once to get correct response. // Change URL to // http://crunchify.com/wp-content/uploads/code/json.sample2.txt to // see retry logic in action.. String myURL = "http://www.google.om"; CrunchifyRetryOnExceptionStrategy retry = new CrunchifyRetryOnExceptionStrategy(); while (retry.shouldRetry()) { try { System.out.println("Requested URL:" + myURL); StringBuilder sb = new StringBuilder(); URLConnection urlConn = null; InputStreamReader in = null; URL url = new URL(myURL); urlConn = url.openConnection(); if (urlConn != null) urlConn.setReadTimeout(60 * 1000); if (urlConn != null && urlConn.getInputStream() != null) { in = new InputStreamReader(urlConn.getInputStream(), Charset.defaultCharset()); BufferedReader bufferedReader = new BufferedReader(in); if (bufferedReader != null) { int cp; while ((cp = bufferedReader.read()) != -1) { sb.append((char) cp); } bufferedReader.close(); } } System.out.println(sb.toString()); in.close(); break; } catch (Exception e) { try { System.out.println("in catch....."); retry.errorOccured(); } catch (RuntimeException e1) { throw new RuntimeException("Exception while calling URL:" + myURL, e); } catch (Exception e1) { throw new RuntimeException(e1); } } } } static class CrunchifyRetryOnExceptionStrategy { public static final int DEFAULT_RETRIES = 3; public static final long DEFAULT_WAIT_TIME_IN_MILLI = 2000; private int numberOfRetries; private int numberOfTriesLeft; private long timeToWait; public CrunchifyRetryOnExceptionStrategy() { this(DEFAULT_RETRIES, DEFAULT_WAIT_TIME_IN_MILLI); } public CrunchifyRetryOnExceptionStrategy(int numberOfRetries, long timeToWait) { this.numberOfRetries = numberOfRetries; numberOfTriesLeft = numberOfRetries; this.timeToWait = timeToWait; } /** * @return true if there are tries left */ public boolean shouldRetry() { return numberOfTriesLeft > 0; } public void errorOccured() throws Exception { numberOfTriesLeft--; if (!shouldRetry()) { throw new Exception("Retry Failed: Total " + numberOfRetries + " attempts made at interval " + getTimeToWait() + "ms"); } waitUntilNextTry(); } public long getTimeToWait() { return timeToWait; } private void waitUntilNextTry() { try { Thread.sleep(getTimeToWait()); } catch (InterruptedException ignored) { } } }}
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- php:内存回收机制
- python 打开文件,写入文件,关闭文件,读文件,清空文件内容
- 目前为止存在的这些问题
- C++基本知识归纳(1)
- Java 语言中 List、Set 和 Map 的区别
- 欢迎使用CSDN-markdown编辑器
- javaScript 预览图片,base64导出报表,打印
- 关于c++stl
- 最小组合数字【贪心+排序】
- 新安装的wampserver怎么使用本机已有的mysql作为数据库
- ios UI开发相关转载链接汇总
- 同步代码块,同步方法,同步静态方法,同步非静态方法的区别
- 黑马程序员——015——其他对象(System、Runtime、Date、Calendar、Math、Random)
- 关于Ant脚本文件