关于这两个 HTTP 库之间的权衡,我应该了解哪些?
我想说取决于您的需求。我在执行简单的 GET 和 POST 时使用了 java.net。突然我需要对会话 cookie 等的支持,所以我切换到了 HTTPClient。
这也是我的一般建议。不要为无需第三方库即可轻松完成的简单任务引入对第三方库的依赖。
嗯,apache 库易于使用且可靠,但正如 aioobe 所说,引入了外部依赖项(鉴于具有 apache 许可证,这对于商业产品来说应该不是问题)。恕我直言,如果你必须处理大量同时连接,我会选择 apache lib,因为性能可能会更好。
查看这篇文章:http://lassewesth.blogspot.com.es/2009/05/i-like-apache-http-client-over.html
发生了很多事情,在 JEP 321 之后,java 内置 HTTP 客户端变得非常强大
var httpClient = HttpClient.newBuilder().build();
var request =
HttpRequest.newBuilder(URI.create("http://localhost:8080")).build();
var responseBodyHandler = HttpResponse.BodyHandlers.ofString();
CompletableFuture.allOf(
httpClient.sendAsync(request, responseBodyHandler).thenAccept(System.out::println),
httpClient.sendAsync(request, responseBodyHandler).thenAccept(System.out::println),
httpClient.sendAsync(request, responseBodyHandler).thenAccept(System.out::println))
.join();