0

我正在查询服务器(我没有编写)以获取网站的 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;
}
4

2 回答 2

4

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

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


不相关,但考虑不捕获Exception

于 2013-06-26T18:55:53.880 回答
0

您可以将代码放在不同的线程中。启动线程后,您会一直执行此操作sleep,直到设置了线程中的标志,或者直到 x 秒过去。然后你继续主程序。

于 2013-06-26T18:57:47.760 回答