在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

回到顶部