【发布时间】:2014-04-02 16:49:09
【问题描述】:
HttpClient 4.3.x 问题。
似乎没有办法在 CloseableHttpClient 上为 4.3.x 附加默认主机。
这令人沮丧,因为它要求您的所有请求构建器预先了解所有主机信息,而不是仅仅构建特定于调用的请求部分并让客户端填写任何遗漏的默认值(例如,像默认主机、端口等)。
在 4.2.x 及之前的版本中,您可以在客户端设置默认主机,任何请求只需要一个子路径 + 参数。
但是在 4.3.x 中,你会混淆 setRoutePlanner(x)(可能有代理设置)和 setProxy(x)(可能会被路由规划器覆盖)层,我很困惑它们是如何与实际的客户端实例。并且调试它表明路由规划器不会被用于 default_host,并且 4.3.2 版本实际上期望设置已弃用的 ClientPNames.DEFAULT_HOST(对于空目标主机的情况),这可能是一个缺陷。
我发现 apache httpclient 在所有这些变化中都处于领先地位。
不幸的是,这些示例并没有完全阐明 http 客户端的使用。
顺便说一句:新设计太烂了,为什么不直接设置 setDefaultHost(x) 呢?并消除对代理分层的困惑。
除非我遗漏了什么,否则如何在 http 客户端 4.3.x 中设置默认主机?
您认为他们为什么改变并决定在请求对象中预先设置所有内容而不是在客户端中设置默认值?
【问题讨论】:
-
"调试它显示路由规划器不会被用于 default_host,并且 4.3.2 版本实际上期望设置已弃用的 ClientPNames.DEFAULT_HOST(对于空目标主机的情况),即也许是一个缺陷”这确实是一个缺陷。空目标作为路线规划器的输入应该是完全合法的。请针对此缺陷为项目提出 JIRA
-
谢谢。一般来说,为什么 httpclient 项目决定以需要持有所有这些部分/部分的方式将这么多客户端外部化?让所有这些组件都被覆盖是很好的,但是为了构建请求对象而不是在客户端上设置属性并让它使用默认值来水合请求对象,这并不好。
-
鉴于您帖子的情绪,我怀疑我要说的任何话都会有所作为。