问题标签 [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.
java - Apache AsyncHttpClient 4.1.4 创建新的套接字连接而不是重用来自连接池的连接
我们正在使用具有以下依赖项的 Apache AsyncHttpClient
我们注意到它正在为每个请求创建一个与下游的新套接字连接(启用 ssl 和客户端身份验证)。我们的期望是重用池中的连接。
以下是调试日志
注意:当不使用 SSL 时,它按照我们的预期工作(重用池中的连接)
以下是我们的配置
以下是请求标头
以下是响应标头
注:jdk版本为1.8
apache-httpcomponents - Apache Http 异步客户端的内容 GZIP 解压缩
在经典的HttpClient
GZIP 解压缩中,由ContentCompressionExec
. 这是如何完成的HttpAsyncClient
?我找不到任何AsyncExecChainHandler
实现此功能的东西。
java - 使用 Apache HTTPAsyncClient 为每个 HTTPS 请求自定义 SSLContext
我已经使用 Apache HTTP 异步客户端库构建了一个客户端,我有一个 http/https 请求池。问题是我需要使用证书和客户端私钥执行 https 请求。我能够做到这一点,但只有一个 SSLContext,所以,一旦我在那里加载证书+私钥,所有对端点的 HTTPS 请求都将使用这些证书+密钥,我需要在执行 http 之前执行验证如果某些条件有效,则请求并将证书加载到请求中,然后,我需要能够为每个 https 请求加载证书+私钥。
提前致谢。
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 数据。
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 实现这一点?
提前致谢。
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 设置变量会反映应用程序的所有用户RestServiceAsync
HttpResponse response = future.get(timeout, TimeUnit.Seconds);
RestServiceAsync
timeout
2 . timeout
从方法调用中作为参数发送为restService.get("http://localhost/reports",30)
; 这可行,但我必须更新IRestService
.
我想知道是否有一种替代的有效方法可以引入timeout
,而不必触及所有方法,IRestService
而只需在RestServiceAsync
PS:ApacheAsyncClient 使用PoolingNHttpClientConnectionManager
和 ApacheHttpClient 使用PoolingHttpClientConnectionManager
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-Snapshot
am 后出现以下错误
有人可以帮我解决这个问题吗?
https - Apache HTTPAsyncClient 在响应之前关闭连接
我正在使用 Apache AsyncHTTPClient 版本 4.1.4(最新)向 API 发送 GET 请求。我似乎无法从服务器获得响应。
这是我的请求日志。
当我使用 Postman 发送相同的请求时,我得到了成功的响应。
这是我处理连接的代码。
我的调试器不会在任何回调方法(完成、失败、取消)中被触发。显然连接由于某种原因被终止。
有人可以解释这里发生了什么吗?谢谢
java - 用不推荐的`DefaultHttpAsyncClient`替换什么?
我正在修改一个现有项目,但我发现它DefaultAsyncHttpClient
已被弃用。用什么替换已弃用的?
.start()
我也无法获取该方法,也无法获取.shutdown
方法。
感谢您的帮助!
apache-flink - HttpAsyncClient HC5 请求超时
我们正在检查使用 HttpClient 5.0 中的 HttpAsyncClient,它将在 Flink AsyncFunction 中创建。要求如下:
- 客户端是根据请求创建的;
- SSL 证书应该在运行时从文件中加载;
- 如果发生延迟的特定次数失败,则应重试请求
这是测试的一部分:
DefaultHttpRequestRetryStrategy 被覆盖以允许在 SocketTimeout 异常的情况下重试。
在对响应延迟为 1200 毫秒的 MOCK HTTP 服务器进行重试策略测试时,我发现当我预期所有请求都失败时,部分请求成功(因为超时设置为 1000 毫秒)。例如,我同时调用了上述代码 10 次,其中 3 次请求成功。这是否意味着响应超时可以超过配置?当我将 setMaxtTotal 发送到连接管理器(cm.setMaxTotal(100))时,所有请求都按预期失败。为什么增加连接会解决问题(为每个请求创建连接管理器,它不会被新请求/客户端重用)?这是解决超时问题的正确解决方案吗?
PoolingAsyncClientConnectionManager 的使用是否符合我们的要求?如果不是,如何以其他方式配置 SSL 上下文和重试策略?
谢谢!