我们正在 JRE 1.4 上实现一个 REST 客户端。
似乎客户端 REST 框架的两个不错的选择是HttpClient和HttpUrlConnection。
是否有理由在 JRE 的 HttpUrlConnection 上使用 HttpClient?
我们正在 JRE 1.4 上实现一个 REST 客户端。
似乎客户端 REST 框架的两个不错的选择是HttpClient和HttpUrlConnection。
是否有理由在 JRE 的 HttpUrlConnection 上使用 HttpClient?
我会推荐 Jakarta Commons HTTP Client over java.net.HttpUrlConnection,因为它更成熟并且具有更丰富的功能集。例如,您可以要求它设置多线程连接池(参见MultiThreadedHttpConnectionManager),并且它完全支持所有 HTTP 方法(GET、PUT、POST、DELETE、OPTIONS、TRACE)。
我将给您一个具体的理由来支持 Apache 的 HTTPClient 而不是 JDK 实现:JDKHttpUrlConnection
不支持超时*,Apache 的 HTTPClient 支持。
应用程序在调用其他系统(数据库、远程服务、您自己的服务器后端……)时应该始终能够设置超时。
* 这已在 Java 1.5 中修复;Java 1.5 和更高版本支持 HttpUrlConnection 中的超时。
Restlet 框架也有一个在服务器端和客户端都可以工作的 API 。我们支持可插拔客户端连接器,利用 HttpURLConnection 或 Apache HTTP 客户端或我们自己的内部 HTTP 客户端。
我们的 ClientResource 类提供更高级别的 HTTP 客户端 API,具有自动重定向、对象和表示之间的透明转换、内容协商等功能。
此致,
杰罗姆·卢维尔
Restlet ~ 创始人和首席开发者 ~ http://www.restlet.org
Noelios Technologies ~ 联合创始人 ~ http://www.noelios.com
以我的经验,HttpClient 使用起来比使用 HttpUrlConnection 更容易和更直观,但我认为这是一个非常主观的决定和 YMMV。
我会选择 JRE 版本,这样我可以少一点依赖来运送。
... httpclient 不支持代理等的 kerberos/ntlm 身份验证... java 的 httpurlconnection 将进行开箱即用的身份验证...
HttpUrlConnection 很容易处理。REST 实现非常简单。
尽管您必须考虑有关此实现的整个环境并检查哪些对您更有效。