我们正在JRE 1.4上实现REST客户端。
对于客户端REST框架来说,似乎有两个很好的选择:HttpClient和HttpUrlConnection。
是否有理由在JRE的HttpUrlConnection上使用HttpClient?
答案 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实现非常简单。
虽然您必须考虑有关此实现的整个环境,并检查哪些更适合您。