问题标签 [apache-httpasyncclient]

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 回答
100 浏览

apache-httpasyncclient - HttpAsyncClient 5 | 处理 Gzip 内容作为响应的最佳方法

链接我们了解到这automatic content decompression.是不支持的。
那么下面的配方是处理 gzip 内容的好方法吗?

0 投票
0 回答
151 浏览

http - Kotlin/Ktor:请求网页时“预期关闭块”

我正在尝试使用 Ktor 的客户端库(1.4.1)在 Kotlin 中请求一个简单的 HTTP 资源:

但是,我得到了这个例外:

我应该以不同的方式配置 HTTP 客户端吗?

0 投票
2 回答
417 浏览

java - Apache HTTP/2 客户端 5.0 POST 请求缺少有效负载/内容

我有一个部署到 Tomcat 的小型示例 servlet,它将回显任何接收到的参数。Tomcat 配置为支持 HTTP/1.1 和 HTTP/2。我可以用来curl向 servlet 发出 GET 请求,证明它可以在 HTTP/1.1 和 HTTP/2 上工作。

使用 Apache HTTP 5.0 客户端我有一个单元测试来命中 servlet 和POST一个带有一些参数(请求内容)的请求,它工作正常 - 服务器接收参数并将它们返回给我可以读取它们的客户端。在这个测试中,我调用客户端使用 HTTP/1.1 或 HTTP/2CloseableHttpAsyncClient.setVersionPolicy()调用。但是,如果我更改为使用 HTTP/2,则客户端不会将请求内容发送到服务器。

下面是成功的 HTTP/1.1 调用的示例代码 - 你可以看到我有setVersionPolicy(HttpVersionPolicy.FORCE_HTTP_1). 如果我将其更改为,FORCE_HTTP_2则通过 HTTP/2.0 进行调用,但不发送请求内容。

谁能建议我做错了什么或我需要做些什么?我没有找到很多关于使用新的 Apache 5.0 客户端库的文档,并且这些示例没有显示发送和 POST 内容(或者至少是我能找到的那些)。

0 投票
0 回答
302 浏览

java - 如何解决 Apache 客户端 5.0“连接已关闭”HTTPS POST 错误

我在端口 8002 上为 HTTP1.1 和 HTTP/2 配置了 Tomcat 服务器,在端口 8003 上还配置了 HTTPS 以允许我进行测试。我正在使用 Apache HTTP Client 5.0 编写 Java 代码以将 HTTP/2 与服务器通信并遇到问题。最终,我希望能够使用 HTTP/2 将带有内容的消息发布到服务器,但是我遇到了问题,所以我将我的代码精简为一个基于 Apache 提供的示例之一的简单示例 - H2TlsAlpnRequestExecutionExample

给定的示例是使用 GET 请求访问https://nghttp2.org,我可以让它工作。更改为 POST 请求也有效 - 尽管您收到 HTTP 405(不允许的方法)响应,但调用已完成。如果我将完全相同的示例指向我的服务器,那么我可以使用 HTTP/2 成功地 GET 和 POST 到常规 HTTP/1.1 端口 (8002)。然而,在端口 8003 上尝试 GET 或 POST 到 HTTPS 失败 - 尽管使用 HTTPv1.1(而不是 HTTP/2)的 GET/POST 也适用于 HTTPS/8003。

使用 DEBUG 时,我从 apache 库中看不到太多调试信息,但我确实看到我的日志消息说我的证书在这两种情况下都是受信任的,因此显然已经完成了一些初始调用协商。

这是对 nghttp2.org 的 HTTP2 调用的日志(我从日志中的一行看到使用 HTTP/2):

这是我指向我的服务器时的日志。您可以看到它说它信任证书,因此它必须已连接并进行了一些协商,但之后没有任何反应。

这是代码。

有没有人知道如何调试或解决问题?我认为我的 Tomcat 服务器设置没问题 - 有什么东西或工具可以用来验证吗?我可以查看更多调试/日志信息以了解连接关闭的原因以及关闭连接的原因吗?

0 投票
0 回答
26 浏览

java - parse using Apache HttpClient + JSOUP getting empty value JAVA

Trying to capture information about products and all inner elements giving me the empty value. I changed my request to Async and i still have html-page with no loaded information. Html is incomplete. How to solve that problem?

0 投票
0 回答
57 浏览

java - 在运行时在 CloseableHttpAsyncClient 中添加 SSLContext

我们有一个通用应用程序,可以将消息传递到不同的 POST 端点。为此,我们正在使用 CloseableHttpAsyncClient。它的构建/初始化如下,

这是预构建和初始化的。当一个新的请求到达我们的应用程序时,根据消息、身份验证类型,构建一个新的 postRequesthttpPost = new HttpPost(builder.build());

设置所需的标头、有效负载等后,使用退出的 httpClient 发送请求。 httpClient.execute(httpPost, httpContext, null);

现在,问题是基于我们支持基于客户端证书的身份验证的新要求。由于我们目前的方法是在开始时创建 httpClient,问题是如何更改 httpClient 的行为以将客户端证书发送到某些端点并像其他不需要发送证书的端点一样工作?

我知道我可以在创建时将 SSLContext 引入 CloseableHttpAsyncClient,但是在创建时我没有任何信息表明我们有任何需要基于证书的身份验证的端点。我们可以有许多端点来支持客户端证书,并且在运行时就知道了。

0 投票
1 回答
141 浏览

spring-webflux - HttpComponentsClientHttpConnector 不接受带有 Apache Http 客户端的 Webclient 的 org.apache.http.impl.nio.client.CloseableHttpAsyncClient

我试图在 Tomcat 上运行 Webflux 并尝试使用 Apache Http 客户端创建 Sping WebClient。

参考文档指出有内置支持: https ://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html#webflux-client-builder-http-components

但是 Springs HttpComponentsClientHttpConnector 不接受 org.apache.http.impl.nio.client.CloseableHttpAsyncClient。它需要 org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient。所以似乎有一个包重命名,我找不到具有所需类的 Maven 依赖项。有谁知道该类的正确 Maven 依赖关系。或者我怎样才能让它工作?

0 投票
0 回答
80 浏览

apache-httpclient-4.x - HttpComponents HttpAsyncClient 缺少内容

我遇到了间歇性问题,我没有收到完整的响应实体,所以我最终超时。响应在几毫秒内返回,我看到内容正在被消耗,但它没有达到 Content-Length 标头,因此超时启动。我正在调用的服务由第 3 方拥有,他们说完整的正文是在其中发送的我在请求和响应标头之间看到的时间范围。我是否缺少任何可能导致此类行为的配置?

版本
Java:OpenJDK 11.0.6+10-LTS
HttpAsyncClient:4.1.4
HttpCore-Nio:4.4.13

客户端配置

电线日志

0 投票
0 回答
37 浏览

java - 如何使用 ApacheAsyncHttpClient 对 FutureCallback 的响应进行单元测试

我试图弄清楚如何对 a 的回调方法进行单元测试FutureCallback<HttpClient>,但无法弄清楚。

我有以下代码:

我不确定如何强制 FutureCallback 执行已完成、失败或取消。因此latch.countDown()永远不会调用,这意味着测试永远不会结束。

测试这种异步功能的正确方法是什么?

0 投票
0 回答
7 浏览

java - 高并发下使用 HttpAsyncClient 时出现“IllegalStateException: Unexpected request state READY”

我们有一个 HttpAsyncUtil 来处理 HTTP POST 请求。

它在低并发下运行良好。但是,在处理压力测试时出现了问题。

源代码显示Connection state预期是BODY_STREAMACK_EXPECTED但实际上是READY。似乎某些特殊事件重置了Connection state. 但是我们找不到更多的证据。