java - 用计时器强制断线停止

标签 java timer

我正在查询服务器(我没有编写)以获取网站的 HTML,但服务器有一些错误,有时不返回答案。我的方法有一个问题,但需要几分钟才能启动,同时我的代码陷入困境。错误发生在 rd = new BufferedReader(new Input... 行。如果服务器在一两秒内没有返回答案,有没有办法使用计时器强制我的代码退出该方法?我结束代码每运行几百次就会出现此错误。

public String getHTML(String urlToRead) {
    URL url;
    HttpURLConnection conn;
    BufferedReader rd;
    String line;
    String result = "";
    try {
        url = new URL(urlToRead);
        conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        while ((line = rd.readLine()) != null) {
            result += line;
        }
        rd.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

最佳答案

使用现有的超时方法,setConnectTimeout(int)setReadTimeout(int) .

如果超时,则会引发 java.net.SocketTimeoutException

<小时/>

不相关,但考虑不捕获异常

关于java - 用计时器强制断线停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17328197/

相关文章:

java - 客户端上针对不同 Java Web 启动应用程序的不同 Java 版本

java - 用户输入 GUI 的值未保存?

c# - System.Timer 奇怪的行为

java - 我在 Timer 类中找不到 start() 方法

java - 小程序未加载到 tomcat 中

java - Java中的日期转换

java - 在一个应用程序中对多个 servlet 进行相同的验证

javascript - 在 "start/stop"计时器中检索 localStorage 数据

javascript - 以天、小时、分钟、秒为单位的 Javascript 倒数计时器

c# - 如果使用计时器控件,是否需要使用异步任务?