当前位置: 首页 > 知识库问答 >
问题:

如何将Apache Httpclient与Jersey 2.3客户端一起使用

方承弼
2023-03-14

我想使用Apache连接器和Jersey 2.3客户端进行HTTPS连接。

我尝试了以下方法:

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, new PoolingClientConnectionManager());

ApacheConnector connector = new ApacheConnector(clientConfig);  
clientConfig.connector(connector);  

Client client = ClientBuilder.newBuilder()
    .withConfig(clientConfig)
    .sslContext(sslContext)
    .hostnameVerifier(getHostnameVerifier())
    .build();

但是,sslContext似乎被忽略,因为服务器的证书被拒绝为不受信任(sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径)

如果删除“.withConfig(clientConfig)”部分,SSL连接可以正常工作,但显然没有Apache连接器。有没有办法将我自己的ClientConfig与Apache连接器以及我自己的SSLContext一起使用?

共有2个答案

曾典
2023-03-14

不知道你为什么使用apache连接器。但是你可以像这样使用泽西和https建立客户端连接:

ClientConfig config = new DefaultClientConfig();
SSLContext ctx = SSLContext.getInstance("SSL");
ctx.init(null, myTrustManager, null);
config.getProperties().put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(hostnameVerifier, ctx));
Client client = Client.create(config);
苏彦君
2023-03-14

您需要为apache连接器配置SSL。

ClientConfig clientConfig = new ClientConfig();
clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, new PoolingClientConnectionManager());
//config your ssl for apache connector
SslConfigurator sslConfig = SslConfigurator.newInstance();
clientConfig.property(ApacheClientProperties.SSL_CONFIG, sslConfig);

ApacheConnector connector = new ApacheConnector(clientConfig);  
clientConfig.connector(connector);  

Client client = ClientBuilder.newBuilder()
.withConfig(clientConfig)
.hostnameVerifier(getHostnameVerifier())
.build();
 类似资料:
  • 问题内容: 在尝试在Elastic Search中的文档上使用统计方面时,我遇到了一些问题。这导致在Elastic Search google组上发布了以下帖子- 请参阅https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY。我试图在有关文档中使用嵌套类型的答案中应用建议,以在collections属性上提供不同的总和(请

  • 问题内容: 我想使用jQuery函数对REST服务进行XHR调用。基本上,这可以正常工作,但是REST服务只能通过https访问,并且要求客户端使用客户端证书进行身份验证。 如何使用jQuery的功能发送客户端证书? 问题答案: 如果请求源和目标位于同一域中,并且使用https:保护AJAX和SSL,则可以进行ssl ajax调用。但是您不能在ajax调用中进行ssl认证。

  • 我想使用Quarkus中的JooqDSL来构建我的SQL(并希望执行它们) 因此,我添加了以下Quarkus JOOQ扩展。 因为我想在我的项目中使用反应式PG SQL客户端,所以我问自己,例如JOOQ的< code>fetch()方法是否会阻塞线程?它是与引擎盖下的反应式vertx客户端兼容还是使用阻塞式客户端?看起来像后者,因为它不返回未来或者类似的东西。 在这种情况下,我应该只使用JOOQ来

  • null null 消息客户端-REST资源: 消息客户端-MessageClient: 保存消息的message server引导类具有与客户端相同的注释。 null null

  • 我在文档中找不到足够的关于artemis事务的信息。我不清楚artemis交易是如何工作的,所以我想澄清一下。类中有两个方法: 和 我找不到任何开始交易的方法,我也不知道阿尔特弥斯的交易到底是什么。哪些操作可以提交或回滚? 我已经测试了几个场景,我有了我的结论。有两个操作可以提交或回滚:消息发送和消息接收(确认)。方法和仅用于提交和回滚消息发送和确认。开始事务不需要任何方法。只有可以提交或回滚的未

  • 很多关于Service Bus的资料都提到它使用AMQP 1.0。然而,我发现的示例使用了隐藏AMQP层的库,因此不清楚如何使用通用AMQP 1.0客户端并执行此服务总线示例中列出的操作 在几种情况下,能够使用独立的AMQP客户端而不是提供的更高级别客户端可能很重要。例如,提供的客户端可能在某些平台上不可用,或者通用客户端可能为特定问题提供更合适的工作方式。 可能相关问题