问题标签 [jetty-httpclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
619 浏览

json - 如何使用 Jetty HttpClient 解析 JSON 和 urlencoded 响应?

请推荐使用Jetty HttpClient时解析 urlencoded 或 JSON 编码响应的最佳方法。

例如,我创建了以下实用程序类用于发送 ADM 消息BufferingResponseListener在其中使用UrlEncoded.decodeUtf8To(用于解析承载令牌响应)和JSON.parse(用于解析消息发送响应):

上面的类工作正常,但是看到有带InputStream in参数的 Jetty 方法,比如

UrlEncoded.decodeTo​(java.io.InputStream in, MultiMap map, java.lang.String charset, int maxLength, int maxKeys)

JSON.parse​(java.io.InputStream in)

我想知道是否有更聪明的方法来获取和解析......也许比BufferingResponseListener?

换句话说,我的问题是:

如何使用上述解析方法的“流式”版本HttpClient

0 投票
1 回答
729 浏览

java - Jetty HttpClient 在 SIGTERM 上抛出 AsynchronousCloseException

我有一个 HttpClient 来访问 REST 服务,现在我正在实现软关闭,这意味着当进程关闭时(kill在 linux 上使用一个简单的命令)它应该停止接收新任务并完成它正在处理的所有任务。

我的 HttpClient 已注册侦听器,因此我可以处理 REST 服务器响应。

软关机是通过使用 ShutdownHook 实现的,但这并不是问题所在。

在测试解决方案时,我偶然发现了这个异常:

发生这种情况是因为我发送了 SIGTERM 信号,而一些 HttpClient 请求被发送到 REST 服务器,但侦听器正在等待响应并且连接中断。

如何防止 HttpClient 终止当前连接,直到它们全部完成?(可能尊重超时)。

更新:显然这是 Jetty 本身不支持的东西(https://github.com/eclipse/jetty.project/issues/1445)。如果对于 HttpClient 上的每个目的地我检查其 connectionPool 是否为空,那可以吗?如果我做对了,这意味着该特定池不再有打开的连接。

0 投票
1 回答
234 浏览

java - 用于 Http2 的仪表 Jetty HttpClient

我正在使用 Jetty 的 http2client 对我的服务器进行同步调用,我的示例程序如下,

客户端部分

请求部分

我需要测量指标,例如每个目的地的连接数、每个连接的请求数、失败的事务数等。

我的应用程序在限制使用wireshark 或任何其他tcp 工具的服务器中运行。所以我需要在java中获取这些数据。启用码头的调试日志是不可行的,因为它会写入 GB 的数据。

有没有办法通过一些 util 或 java 反射来获取这些指标?

提前致谢

0 投票
1 回答
325 浏览

java - 如何为多个用户隔离 Jetty HttpClient?

我正在使用 Eclipse Jetty HttpClient 将 POST 请求发送到服务器,以进行负载测试。

TL;DR:有没有办法使用单个 HttpClient 实例和多个用户凭据集到单个目标 URL?

为此,我需要以单独的用户身份登录到被测服务器。尽管 HttpClient 是线程安全的,但由于其共享身份验证存储,它似乎并不支持单个实例。

解决方案似乎很简单,只需为每个用户或每个线程使用一个 HttpClient。

这可以正常工作,除了 HttpClient 为每个实例创建多个线程(似乎是 5 到 10 个),因此我的负载测试需要一个非常大的堆,否则它会在尝试创建新线程时开始抛出 OutOfMemory 异常。

例如,在这个非常基本的测试中,第一组凭据用于所有后续 POST:

现在,我意识到在这个人为的测试中我可以在循环之间调用httpClient.getAuthenticationStore().clearAuthenticationResults()httpClient.getAuthenticationStore().clearAuthentications();但是这对我的实际测试不起作用,我有多个线程同时发布。

我是否坚持为每个用户使用单独的 HttpClient 实例?

感谢您的任何想法!

0 投票
0 回答
301 浏览

java - Jetty HttpClient 代理身份验证配置 (NTLM)

我们构建了一个 Java 客户端应用程序,该应用程序连接到需要 NTLM 身份验证的代理后面的 API。该应用程序使用 Jetty HttpClient。

不幸的是,身份验证失败并出现 407

我们尝试使用 SPNEGOAuthentication-class 进行身份验证

但没有成功(407)。我们还尝试覆盖 DefaultAuthenticator。

任何提示我们可能做错了什么或其他建议?

提前问候和感谢,托马斯

0 投票
0 回答
44 浏览

jetty - Jetty HttpClient v11.x 中的 URI 模板支持

我刚刚开始使用 Jetty HttpClient v11,它很棒。但是,似乎缺少对路径参数或路由参数的固有支持,尽管它有一种添加查询参数的好方法。

路径参数示例:

不确定它是否在那里,我错过了它,但我正在寻找一种方法来实现它。因此,如果有人已经这样做并为此创建了一个经过良好测试的小型(零外部依赖)实用程序/库,那么请向我指出。

更新:

只是在这里提供一个上下文,就像我想要实现的目标一样。

考虑这个 JAX-RS 资源方法。

我们可以使用注解@PathParam 获取{id} 的值。

同样,我想在我在 Jetty HttpClient 之上编写的 RestClient 中提供一种方式,让消费者可以做一些事情。

我只是在 HttpClient 中寻找相同的东西,我知道这可以在将 URI 传递给这里的 newRequest 方法之前完成。

0 投票
0 回答
21 浏览

java - 收到响应后 Jetty HttpClient 关闭连接

我正在使用 Jetty 的 (10.0.7) HttpClient 发送同步请求。

有没有办法禁用连接池以回退到 HTTP/1.0 行为(每个请求创建连接,然后关闭)

我仔细阅读了文档,并通过 newSelectorManager() 实现了我自己的 ClientConnector 类,该类具有用于 endPointOpened / endPointClosed 的钩子。

我知道可以发送 http 标头“连接:关闭”,但我不想依赖服务器关闭连接,而是在客户端关闭它。