gpt4 book ai didi

java - 如何使用 HttpClient 5 使 Conscrypt SSL Provider 在 Tomcat Web 应用程序中工作

转载 作者:行者123 更新时间:2023-11-28 22:00:50 32 4
gpt4 key购买 nike

我正在使用 Apache HttpClient 5连同 Conscrypt通过 SSL 同时执行 HTTP 2.0 请求,如下所示:

final SSLContext sslContext;
try {
sslContext = SSLContexts.custom()
.setProvider(Conscrypt.newProvider())
.build();
} catch (Exception e) {
// ... omitted for brevity
}

final PoolingAsyncClientConnectionManager cm = PoolingAsyncClientConnectionManagerBuilder.create()
.setTlsStrategy(new ConscriptClientTlsStrategy(sslContext))
.build();

final CloseableHttpAsyncClient httpclient = HttpAsyncClients.custom()
.setVersionPolicy(HttpVersionPolicy.NEGOTIATE)
.setConnectionManager(cm)
.build();

try {
httpclient.start();
HttpHost host = new HttpHost("www.wikidata.org");
final HttpClientContext clientContext = HttpClientContext.create();

final SimpleHttpRequest request = SimpleHttpRequests.GET.create(host, "/w/api.php?action=wbsearchentities&search=Washington");
request.addHeader("Accept-Charset", charset);
FutureCallback<SimpleHttpResponse> callback = // ... omitted for brevity
httpclient.execute(SimpleRequestProducer.create(request),
SimpleResponseConsumer.create(),
clientContext,
callback);
}
catch (Exception e) {
// ... omitted for brevity
}

在单元测试中运行代码成功。但是,如果作为在 Tomcat v8 中运行的 Web 应用程序的一部分运行,它会在调用 Conscrypt.newProvider() 时抛出以下异常:消息:java.lang.UnsatisfiedLinkError:创建临时文件失败(空)。它看起来像一个特权问题。有人可以指出在这种情况下我应该配置什么来解决问题吗?

最佳答案

您需要在类路径中设置 conscrypt-openjdk-uber-1.4.2.jar 而不是 conscrypt-openjdk-1.4.2.jar,希望这能解决您的问题问题是 uber jar 将具有 concrypt 所需的所有依赖项。

还使用 Http2AsyncClientBuilder 而不是 HttpAsyncClients 来实现 http2 多路复用。

关于java - 如何使用 HttpClient 5 使 Conscrypt SSL Provider 在 Tomcat Web 应用程序中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823273/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com