问题标签 [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 投票
1 回答
1122 浏览

java - Apache AsyncHttpClient 4.1.4 创建新的套接字连接而不是重用来自连接池的连接

我们正在使用具有以下依赖项的 Apache AsyncHttpClient

我们注意到它正在为每个请求创建一个与下游的新套接字连接(启用 ssl 和客户端身份验证)。我们的期望是重用池中的连接。

以下是调试日志

注意:当不使用 SSL 时,它按照我们的预期工作(重用池中的连接)

以下是我们的配置

以下是请求标头

以下是响应标头

注:jdk版本为1.8

0 投票
1 回答
120 浏览

apache-httpcomponents - Apache Http 异步客户端的内容 GZIP 解压缩

在经典的HttpClientGZIP 解压缩中,由ContentCompressionExec. 这是如何完成的HttpAsyncClient?我找不到任何AsyncExecChainHandler实现此功能的东西。

0 投票
1 回答
187 浏览

java - 使用 Apache HTTPAsyncClient 为每个 HTTPS 请求自定义 SSLContext

我已经使用 Apache HTTP 异步客户端库构建了一个客户端,我有一个 http/https 请求池。问题是我需要使用证书和客户端私钥执行 https 请求。我能够做到这一点,但只有一个 SSLContext,所以,一旦我在那里加载证书+私钥,所有对端点的 HTTPS 请求都将使用这些证书+密钥,我需要在执行 http 之前执行验证如果某些条件有效,则请求并将证书加载到请求中,然后,我需要能够为每个 https 请求加载证书+私钥。

提前致谢。

0 投票
1 回答
209 浏览

android - 从android上传图像文件到laravel api

我无法理解如何使用 POST 数据将图像文件从我的 android 设备上传到 Laravel API,我已经使用 android-asynchronous-http-client 向 API 发送了一些文本数据,但它不适用于图像文件。API 端工作正常我使用 POSTMAN 对其进行了测试,但在 android 设备上出现错误status code: 500 Internal Server Error

安卓部分

ImageEvidence是一个Uri类型变量,用于imageView.setImageURI(ImageEvidence)并且evidenceID只是图像文件的名称。

LARAVEL API 部分

请告诉我应该使用哪个库来发送图像文件和 POST 数据。

0 投票
1 回答
241 浏览

apache - 是否可以从 HttpClient-5.x 中止 HttpAsynClient 中的 http 请求 [GET、POST 等]?

我正在使用 org.apache.hc.client5.http.impl.async.HttpAsyncClients.create() 为我的 HTTP/2 请求创建 org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient。我正在寻找一些功能来从套接字通道读取一些数据后中止请求。

我尝试使用 Future 实例中的 cancel(mayInterruptIfRunning) 方法。但是在中止它之后,我无法获得响应标头和下载的内容。

有没有其他方法可以通过 httpclient-5.x 实现这一点?

提前致谢。

0 投票
0 回答
221 浏览

java - Java 8 RestService:在 Spring bean 中设置响应超时的有效方法

我正在 Spring MVC 整体应用程序中编写自定义 RestService(wrapper of Apache Http Client 4.5.10) 和 RestServiceAsync(wrapper of Apache httpasyncclient 4.1.4)。

下面是我的IRestService

下面是我的RestServiceBase

下面是我的RestService(它使用同步版本的 Apache http 客户端)

下面是我的RestService(它使用Apache http 客户端的异步版本)

下面是我的示例用例RestServiceAsync

我想引入响应读取timeout,以便执行RestServiceAsync.execute方法的主线程不会等待超过不同用例所需的时间。以下是我这样做的方法

1 . 在和 do中引入一个私有timeout变量并使用 setter 方法。这种方法不可行,因为单例 bean 设置变量会反映应用程序的所有用户RestServiceAsyncHttpResponse response = future.get(timeout, TimeUnit.Seconds);RestServiceAsynctimeout

2 . timeout从方法调用中作为参数发送为restService.get("http://localhost/reports",30); 这可行,但我必须更新IRestService.

我想知道是否有一种替代的有效方法可以引入timeout,而不必触及所有方法,IRestService而只需在RestServiceAsync

PS:ApacheAsyncClient 使用PoolingNHttpClientConnectionManager和 ApacheHttpClient 使用PoolingHttpClientConnectionManager

0 投票
0 回答
2328 浏览

java - Apache Http Async Client 4.1.4:请求无法执行;I/O 反应器状态:已停止

java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED当我尝试使用 Https 请求时,我得到了closeableHttpClient.execute(request, null)

下面是导致异常的方法

下面是我的ApacheAsyncClient初始化方法

下面是我的IdleConnectionEvictor

更新 下面是调试日志,我注意到 Reactor 在发出第一个请求后正在关闭

更新 1 使用4.1.5-Snapshotam 后出现以下错误

有人可以帮我解决这个问题吗?

0 投票
1 回答
295 浏览

https - Apache HTTPAsyncClient 在响应之前关闭连接

我正在使用 Apache AsyncHTTPClient 版本 4.1.4(最新)向 API 发送 GET 请求。我似乎无法从服务器获得响应。

这是我的请求日志。

当我使用 Postman 发送相同的请求时,我得到了成功的响应。

这是我处理连接的代码。

我的调试器不会在任何回调方法(完成、失败、取消)中被触发。显然连接由于某种原因被终止。

有人可以解释这里发生了什么吗?谢谢

0 投票
1 回答
71 浏览

java - 用不推荐的`DefaultHttpAsyncClient`替换什么?

我正在修改一个现有项目,但我发现它DefaultAsyncHttpClient已被弃用。用什么替换已弃用的?

.start()我也无法获取该方法,也无法获取.shutdown方法。

感谢您的帮助!

0 投票
0 回答
428 浏览

apache-flink - HttpAsyncClient HC5 请求超时

我们正在检查使用 HttpClient 5.0 中的 HttpAsyncClient,它将在 Flink AsyncFunction 中创建。要求如下:

  1. 客户端是根据请求创建的;
  2. SSL 证书应该在运行时从文件中加载;
  3. 如果发生延迟的特定次数失败,则应重试请求
    这是测试的一部分:

DefaultHttpRequestRetryStrategy 被覆盖以允许在 SocketTimeout 异常的情况下重试。

在对响应延迟为 1200 毫秒的 MOCK HTTP 服务器进行重试策略测试时,我发现当我预期所有请求都失败时,部分请求成功(因为超时设置为 1000 毫秒)。例如,我同时调用了上述代码 10 次,其中 3 次请求成功。这是否意味着响应超时可以超过配置?当我将 setMaxtTotal 发送到连接管理器(cm.setMaxTotal(100))时,所有请求都按预期失败。为什么增加连接会解决问题(为每个请求创建连接管理器,它不会被新请求/客户端重用)?这是解决超时问题的正确解决方案吗?

PoolingAsyncClientConnectionManager 的使用是否符合我们的要求?如果不是,如何以其他方式配置 SSL 上下文和重试策略?

谢谢!