我正在尝试寻找Java与Groovy的等价物:
String content = "http://www.google.com".toURL().getText();
我想把URL中的内容读成字符串。对于这么简单的任务,我不想用缓冲流和循环来污染我的代码。我研究了apache的HttpClient,但我也没有看到一两行代码的实现。
发布于 2012-11-30 02:17:08
自从最初的答案被接受以来,已经过去了一段时间,现在有了更好的方法:
String out = new Scanner(new URL("http://www.google.com").openStream(), "UTF-8").useDelimiter("\\A").next();
如果您想要一个稍微完整一点的实现,而不是一行,请执行以下操作:
public static String readStringFromURL(String requestURL) throws IOException
{
try (Scanner scanner = new Scanner(new URL(requestURL).openStream(),
StandardCharsets.UTF_8.toString()))
{
scanner.useDelimiter("\\A");
return scanner.hasNext() ? scanner.next() : "";
}
}
发布于 2013-05-05 09:10:31
或者只使用Apache Commons IOUtils.toString(URL url)
,或者也接受编码参数的变体。
发布于 2015-10-12 10:50:02
现在更多的时间已经过去了,下面是在Java 8中实现这一点的方法:
URLConnection conn = url.openConnection();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
pageText = reader.lines().collect(Collectors.joining("\n"));
}
https://stackoverflow.com/questions/4328711
复制相似问题