在Java中超时重试连接
我有一个方法(如下),该方法可以下拉并以String形式返回网页的来源。一切正常且繁琐,但是当连接超时" title="连接超时">连接超时时,程序将引发异常并退出。有没有更好的方法可以执行此操作以允许它在超时时重试,或者有没有办法在此方法内执行此操作?
public static String getPage(String theURL) { URL url = null;
try {
url = new URL(theURL);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
exitprint();
}
InputStream is = null;
try {
is = url.openStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
exitprint();
}
int ptr = 0;
StringBuffer buffer = new StringBuffer();
try {
while ((ptr = is.read()) != -1) {
buffer.append((char)ptr);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
exitprint();
}
return buffer.toString();
}
回答:
这是代码的重构,应重试下载N
时间。虽然尚未进行测试,但是它应该向正确的方向发展。
public static String getPage(String theURL) { URL url = null;
try {
url = new URL(theURL);
} catch (MalformedURLException e) {
e.printStackTrace();
exitprint();
}
for (int i = 0; i < N; i++) {
try {
InputStream is = url.openStream();
int ptr = 0;
StringBuffer buffer = new StringBuffer();
while ((ptr = is.read()) != -1)
buffer.append((char)ptr);
} catch (IOException e) {
continue;
}
return buffer.toString();
}
throw new SomeException("Failed to download after " + N + " attepmts");
}
以上是 在Java中超时重试连接 的全部内容, 来源链接: utcz.com/qa/404173.html