我有以下 Java 代码来获取给定 URL 处 HTML 页面的全部内容。这可以以更有效的方式完成吗?欢迎任何改进。
public static String getHTML(final String url) throws IOException {
if (url == null || url.length() == 0) {
throw new IllegalArgumentException("url cannot be null or empty");
}
final HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
final BufferedReader buf = new BufferedReader(new InputStreamReader(conn.getInputStream()));
final StringBuilder page = new StringBuilder();
final String lineEnd = System.getProperty("line.separator");
String line;
try {
while (true) {
line = buf.readLine();
if (line == null) {
break;
}
page.append(line).append(lineEnd);
}
} finally {
buf.close();
}
return page.toString();
}
我不禁觉得线路阅读不是最佳的。我知道我可能掩盖了电话MalformedURLException
引起的问题openConnection
,我对此没有意见。
我的函数还具有使 HTML 字符串具有当前系统的正确行终止符的副作用。这不是要求。
我意识到网络 IO 可能会使读取 HTML 所需的时间相形见绌,但我仍然想知道这是最优的。
附带说明:如果StringBuilder
有一个 open 的构造函数,InputStream
它会简单地获取所有内容InputStream
并将其读入StringBuilder
.