使用HTTPClient或HttpUrlConnection?

时间:2009-11-16 00:59:55

标签: java rest httpclient httpurlconnection

我们正在JRE 1.4上实现REST客户端。

对于客户端REST框架来说,似乎有两个很好的选择:HttpClientHttpUrlConnection

是否有理由在JRE的HttpUrlConnection上使用HttpClient?

7 个答案:

答案 0 :(得分:4)

我将给出一个有利于Apache的HTTPClient而不是JDK实现的具体理由:JDK的HttpUrlConnection不支持超时*,Apache的HTTPClient支持超时*。

应用程序应始终能够在调用其他系统(数据库,远程服务,您自己的服务器后端......)时设置超时。

*这已在Java 1.5中修复; Java 1.5及更高版本支持HttpUrlConnection中的超时。

答案 1 :(得分:4)

我建议使用Jakarta Commons HTTP Client而不是java.net.HttpUrlConnection,因为它更成熟并且有richer feature set。例如,您可以要求它设置多线程连接池(请参阅MultiThreadedHttpConnectionManager),它完全支持所有HTTP方法(GET,PUT,POST,DELETE,OPTIONS,TRACE)。

答案 2 :(得分:2)

Restlet Framework还有一个既适用于服务器端又适用于客户端的API。我们支持可插拔客户端连接器,利用HttpURLConnection或Apache HTTP Client或我们自己的内部HTTP客户端。

我们的ClientResource类提供更高级别的HTTP客户端API,具有自动重定向,对象和表示之间的透明转换,内容协商等功能。

致以最诚挚的问候,

Jerome Louvel

Restlet~创始人兼首席开发人员〜http://www.restlet.org

Noelios Technologies~联合创始人〜http://www.noelios.com

答案 3 :(得分:1)

根据我的经验,使用HttpClient比使用HttpUrlConnection更容易,更直观,但我认为这是一个非常主观的决定和YMMV。

答案 4 :(得分:1)

我会使用JRE版本,因此我可以减少一个依赖性。

答案 5 :(得分:1)

... httpclient不支持代理等的kerberos / ntlm身份验证... java的httpurlconnection将开箱即用的身份验证...

答案 6 :(得分:0)

HttpUrlConnection易于处理。 REST实现非常简单。

虽然您必须考虑有关此实现的整个环境,并检查哪些更适合您。