httpcomponent-core5 中的 isrequestSent()

问题描述 投票:0回答:1

如何使用 apache httpcomponent-core5 库知道完整的请求是否已通过 http 发送。 httpcore-4 中也有同样的功能,但 httpcorecontext“HTTP_REQ_SENT”已被删除,没有任何解释。

java http apache-httpcomponents apache-httpclient-5.x
1个回答
0
投票

使用 https://svn.apache.org/viewvc?view=revision&revision=1686588 删除了属性和方法 - 调用代码在同一天使用 https://svn.apache.org/viewvc?view 删除=revision&revision=1686589,根据后来提交的提交消息,我的猜测是人们不再想重试非幂等方法,因此决定更改重试行为。

我没有在httpcore5源代码中找到真正的替代品,如果真的想监视标头是否已经发送,可以考虑编写一个自定义的

org.apache.hc.core5.http.impl.Http1StreamListener
(但是这个接口也被标记为内部 - 不确定是否这确实是个好主意)并在自定义的
org.apache.hc.core5.http.impl.io.HttpRequestExecutor
中使用它(请参阅那里的构造函数);调用
org.apache.hc.core5.http.impl.Http1StreamListener#onRequestHead
后(执行期间)立即调用方法
org.apache.hc.core5.http.io.HttpClientConnection#sendRequestHeader

恕我直言,即使存在差异,这也足够接近原始属性,原始属性仅在调用

org.apache.hc.core5.http.io.BHttpConnection.flush()
后才设置。

© www.soinside.com 2019 - 2024. All rights reserved.