在Apache HttpClient 5.1和Java 11中,指定server_name需要进行一些额外的配置。我们可以使用SSLContextBuilder来完成这个任务。
下面是具体的代码示例:
SSLContext sslContext = SSLContextBuilder.create()
.setProtocol("TLS")
.loadTrustMaterial(new TrustSelfSignedStrategy())
.build();
HttpClient client = HttpClient.newBuilder()
.sslContext(sslContext)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI("https://example.com"))
.GET()
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
在这个示例中,我们使用了SSLContextBuilder来创建一个SSLContext,并将其用于构建HttpClient。这样,我们就可以在HttpRequest中指定server_name,而不会遇到任何问题。
值得一提的是,这个示例中使用的TrustSelfSignedStrategy实现仅限于开发和测试环境。在生产环境中,我们应该使用更安全的TrustManager来验证服务器证书。