我编写了这段非常经典的代码来读取 URL 的内容。
// Prepares the connection
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
// Reads the data
StringBuilder data;
String inputLine;
try (InputStreamReader isr = new InputStreamReader(uc.getInputStream(), "utf-8");
BufferedReader in = new BufferedReader(isr)) {
data = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
data.append(inputLine);
}
}
// Returns the read data
return data.toString();
但有时,我正在读取的网址包含太多数据,或者客户端连接太慢,或者其他什么......所以读取花费了太多时间。
有没有办法为 BufferedReader(或 InputStreamReader,或者 URLConnection?)指定“最大读取时间”?理想情况下,它会在达到“最大读取时间”后抛出 TimeoutException。
我做了一些研究,但我发现的只是接收数据大小的限制,而不是执行时间的限制。
最佳答案
只需在开始读取之前调用 URLConnection.setReadTimeout()
即可。如果超时,将抛出SocketTimeoutException
。
关于Java,限制BufferedReader读取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647187/