首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jetty:如何在Jetty客户端使用SSL

Jetty:如何在Jetty客户端使用SSL
EN

Stack Overflow用户
提问于 2015-10-15 10:47:50
回答 2查看 6.9K关注 0票数 4

我正在使用Jetty开发我的客户端应用程序。我不会在服务器部分使用Jetty。我需要在客户端配置什么才能使用Jetty客户端发送"https“请求?

这就是我对HTTP客户端所做的:

代码语言:javascript
复制
httpClient = new HttpClient();
// Configure HttpClient
httpClient.setFollowRedirects(false);

httpClient.start();

Request request = httpClient.newRequest(url);
//code
httpClient.stop();

如果我试图使用“https”发送请求,则会出现此异常:

代码语言:javascript
复制
java.util.concurrent.ExecutionException: java.lang.NullPointerException
    at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
    at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101)
    at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:653)
    at egm.httpClient.jetty.TestBackend.POST(TestBackend.java:204)
    at egm.httpClient.jetty.TestStep.execute(TestStep.java:77)
    at egm.httpClient.jetty.TestSuite.execute(TestSuite.java:57)
    at egm.httpClient.jetty.TestLauncher.main(TestLauncher.java:139)
Caused by: java.lang.NullPointerException
    at org.eclipse.jetty.io.ssl.SslClientConnectionFactory.newConnection(SslClientConnectionFactory.java:57)
    at org.eclipse.jetty.client.AbstractHttpClientTransport$ClientSelectorManager.newConnection(AbstractHttpClientTransport.java:187)
    at org.eclipse.jetty.io.ManagedSelector.createEndPoint(ManagedSelector.java:411)
    at org.eclipse.jetty.io.ManagedSelector.access$1600(ManagedSelector.java:56)
    at org.eclipse.jetty.io.ManagedSelector$CreateEndPoint.run(ManagedSelector.java:587)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
    at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.execute(ExecuteProduceConsume.java:101)
    at org.eclipse.jetty.io.ManagedSelector.run(ManagedSelector.java:136)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
    at java.lang.Thread.run(Unknown Source)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-24 22:03:13

因为jetty-client >= 10

HttpClient支持HTTPS请求,就像浏览器一样。

优先码头-客户9

为了执行HTTPS请求,您应该首先创建一个SslContextFactory.Client。

您必须像这样将一个SslContextFactory传递到HttpClient

代码语言:javascript
复制
HttpClient httpClient = new HttpClient(new SslContextFactory());

您甚至可以通过信任所有或给它一个密钥存储库来配置SslContextFactory

代码语言:javascript
复制
new SslContextFactory(true);
new SslContextFactory("/path/to/.keystore");
票数 13
EN

Stack Overflow用户

发布于 2021-04-20 09:33:41

这就是我对jetty-11成功的原因

代码语言:javascript
复制
SslContextFactory.Client sslContextFactory = new SslContextFactory.Client();
sslContextFactory.setTrustAll(true); // you might want to think about this first


ClientConnector clientConnector = new ClientConnector();
clientConnector.setSslContextFactory(sslContextFactory);

HttpClient httpClient = new HttpClient(new HttpClientTransportDynamic(clientConnector));
httpClient.start();

有关解释,请参阅此处的正式文档https://www.eclipse.org/jetty/documentation/jetty-11/programming-guide/index.html#pg-client-http-configuration-tls

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33146476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档