Web Services 用Java调用Web服务/Web站点

z9smfwbn  于 2022-11-15  发布在  Java
关注(0)|答案(4)|浏览(172)

为现有的GWT项目编写一些附加的类。我需要:

  • 请求URL
  • 读入返回的网页,以便对其进行操作。

返回的页面是非常简单的HTML格式,因此解析它应该不是很困难,我只需要先获取数据。
我如何在Java中做到这一点?我最好看什么包?

w8ntj3qf

w8ntj3qf1#

使用原生Java API,读取URL最简单的方法是使用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。

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);

另请参阅:

uurv41yg

uurv41yg2#

对于HTML页面,应使用HttpClient
对于Web服务,您需要像CXF这样的框架。

ahy6op9u

ahy6op9u3#

HttpClient虽然非常好,但被认为是过时的。HttpComponents是一个替代方案。

nmpmafwu

nmpmafwu4#

如果你想在客户机上做类似的事情,看看GWT的HTTP类型,但是要注意你要服从same-origin policy

相关问题