【发布时间】:2014-12-19 10:44:10
【问题描述】:
在 httpclient 4.3 中,如果您遵守所有弃用条款,则必须使用 HttpClientBuilder(文档 here)构建和配置您的 HttpClient。方法很明确,看起来很容易使用,HttpClient's interface 很清楚。但也许有点太多了。
在我自己的情况下,我必须继承 Spring 的 HttpComponentsHttpInvokerRequestExecutor(文档 here)。结果,我可以轻松获得HttpClient,但我对这个对象的了解只是它实现了接口。
由于客户端已经构建,而我对它的实现一无所知,我无法访问诸如AbstractHttpClient 的setHttpRequestRetryHandler 或addRequestInterceptor 之类的方法(虽然是的,我知道,它们已被弃用)。
那么,更新这个HttpClient 设置的最干净的方法是什么(重试处理程序和请求拦截器是我目前最关心的)?我应该...
- ...野蛮地将我的客户投给
AbstractHttpClient,希望我能一直收到这个实现? - ... 在我的 HttpInvokerRequestExecutor 的构造函数中创建一个新的
HttpClient,并得到类似下面复制的示例?我可能会补充一点,Spring 的构造函数(至少在 3.2.4 中)也使用了 httpclient 4.3 中不推荐使用的方法。使用此策略是否会遗漏任何副作用? - ...做一些我还没有提议的事情?
自定义构造函数示例:
public CustomHttpInvokerRequestExecutor() {
super(); // will create an HttpClient
// Now overwrite the client the super constructor created
setHttpClient(HttpClientBuilder.custom(). ... .build());
}
【问题讨论】:
标签: java spring httpclient apache-httpclient-4.x