为现有的GWT项目编写一些附加的类。我需要:
返回的页面是非常简单的HTML格式,因此解析它应该不是很困难,我只需要先获取数据。我如何在Java中做到这一点?我最好看什么包?
w8ntj3qf1#
使用原生Java API,读取URL最简单的方法是使用java.net.URL#openStream()。
java.net.URL#openStream()
try (InputStream response = new URL("https://www.stackoverflow.com").openStream()) { String body = new String(input.readAllBytes(), StandardCharsets.UTF_8); System.out.println(body); }
您可以将InputStream输入到任何您喜欢的DOM/SAX解析器中。一般的解析器可以直接接受InputStream作为参数,甚至是URL。Jsoup是较好的HTML解析器之一。如果你想要更多的控制和/或想要一个自文档化的API,那么你可以使用java.net.http.HttpClient,因为Java 11。
InputStream
java.net.http.HttpClient
HttpClient client = HttpClient.newBuilder().build(); HttpRequest request = HttpRequest.newBuilder().GET().uri(URI.create("https://stackoverflow.com")).build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); String body = response.body(); System.out.println(body);
uurv41yg2#
对于HTML页面,应使用HttpClient。对于Web服务,您需要像CXF这样的框架。
ahy6op9u3#
HttpClient虽然非常好,但被认为是过时的。HttpComponents是一个替代方案。
nmpmafwu4#
如果你想在客户机上做类似的事情,看看GWT的HTTP类型,但是要注意你要服从same-origin policy。
4条答案
按热度按时间w8ntj3qf1#
使用原生Java API,读取URL最简单的方法是使用
java.net.URL#openStream()
。您可以将
InputStream
输入到任何您喜欢的DOM/SAX解析器中。一般的解析器可以直接接受InputStream
作为参数,甚至是URL。Jsoup是较好的HTML解析器之一。如果你想要更多的控制和/或想要一个自文档化的API,那么你可以使用
java.net.http.HttpClient
,因为Java 11。另请参阅:
uurv41yg2#
对于HTML页面,应使用HttpClient。
对于Web服务,您需要像CXF这样的框架。
ahy6op9u3#
HttpClient虽然非常好,但被认为是过时的。HttpComponents是一个替代方案。
nmpmafwu4#
如果你想在客户机上做类似的事情,看看GWT的HTTP类型,但是要注意你要服从same-origin policy。