【发布时间】:2011-03-18 21:58:39
【问题描述】:
我必须在 Java 中实现一个 HTTP 客户端,并且根据我的需要,似乎最有效的方法是实现 HTTP 管道(根据 RFC2616)。
顺便说一句,我想通过管道发送 POST。 (另外,我不是在谈论多路复用。我在谈论流水线,即在接收任何响应批处理 HTTP 请求之前通过一个连接进行许多请求)
我找不到明确声明它支持流水线的第三方库。但我可以使用例如Apache HTTPCore 构建这样的客户端,或者如果我必须自己构建它。
我的问题是这是否是个好主意。我没有找到任何权威参考资料表明 HTTP 流水线不仅仅是一种理论模型,而是由 HTTP 服务器正确实现的。此外,所有支持流水线的浏览器都默认关闭此功能。
那么,我应该尝试实现这样的客户端,否则由于服务器的实现(或代理),我会遇到很多麻烦。是否有任何参考资料提供这些指导?
如果这是一个坏主意,那么提高效率的替代编程模型是什么?分离 TCP 连接?
【问题讨论】:
-
不是你所需要的,但是 serf 是一个实现 HTTP 流水线的 C 库code.google.com/p/serf 我不能 100% 确定它是否支持流水线帖子。
-
谢谢,我得用java做
-
@user384706 从未尝试过 serf,但如果确实做到了您想要的并且其他一切都失败了,那么您可以随时尝试 JNI/JNA。
-
@ luiscubal 谢谢,但我的问题是,如果我什至使用 JNI/JNA 使用 serf,服务器或代理是否正确支持流水线,或者我会遇到麻烦吗?例如我的理解是 apache HTTPClient 故意不支持流水线。找不到权威的参考资料或具体的例子来证明它是一个实际用于提高性能的功能。
-
供参考:“支持流水线的基于 Java 的 HTTP 客户端”-stackoverflow.com/questions/2777005/…
标签: java http rfc2616 pipelining