【问题标题】:Should use of java.net.HttpURLConnection be discouraged as org.apache.http.client.HttpClient is way better ?应该不鼓励使用 java.net.HttpURLConnection ,因为 org.apache.http.client.HttpClient 更好吗?
【发布时间】:2011-09-21 07:24:48
【问题描述】:
我仍然看到人们使用 HttpURLConnection 与网站进行通信。这个论坛也有很多与 HttpURLConnection 相关的问题。现在,来自 apache 的 HttpClient 几乎可以实现 HttpURLConnection 可以实现的所有功能,而且代码更少、更干净、更高效。我的问题是,
- 作为开发人员,我们是否应该普遍劝阻使用 HttpURLConnection ?
- 是否存在使用 HttpURLConnection 优先于 HttpClient 的用例?
【问题讨论】:
标签:
java
http
httpurlconnection
apache-httpclient-4.x
【解决方案1】:
作为开发人员,我们是否应该普遍劝阻使用 HttpURLConnection ?
不,我不会那样看的。
有没有使用 HttpURLConnection 优先于 HttpClient 的用例?
对于真正简单的用例,HttpURLConnection 可以很好地完成工作,为了几行更清晰的代码,我不会包含任何依赖项。
对于我想说的任何其他情况,请使用HttpClient :-)
这种推理适用于所有第 3 方 Java 库。如果这是一个有限的场景,并且如果标准 API 做得足够好,那就去吧。否则,请始终使用使您的生活更轻松的库。例如比较
-
Caldenar / Date vs JodaTime
- 标准 API
Collection 类与 Guava / Apache Commons
- 您选择的库与标准 Java 对应库。
【解决方案2】:
如果你有完整的源代码,你应该更喜欢HttpClient。它比 HttpURLConnection 好得多,提供更多功能并为您提供重定向等服务。
对于非常简单的情况,使用它可能会产生开销。也可能存在不允许使用第三方库的情况。这些是我能想到的不喜欢 HttpClient 的唯一原因。