Android上的DefaultHttpClient或HttpURLConnection

时间:2012-02-17 15:31:18

标签: java android

在构建旨在与移动设备交互的Web服务时,我不确定在Android上实现HTTP请求的最佳方法是什么。

我遇到过这篇文章,最后说明HttpURLConnection是发出HTTP请求的首选方法,我使用HttpsURLConnection取得了成功。

在搜索答案或阅读其他示例代码时(即使是相当近期的帖子),所有人似乎都使用DefaultHttpClient,这似乎与Google的官方消息相悖。

我正在尝试尽可能地证明我的Android应用程序。考虑到这一点,HttpURLConnection是最佳选择吗?

3 个答案:

答案 0 :(得分:13)

如果您同时支持2.2 ,最佳方法可能是同时使用DefaultHttpClient或HttpURLConnection

if (Integer.parseInt(Build.VERSION.SDK) <= Build.VERSION_CODES.FROYO) {
        // Use DefaultHttpClient here
  }
else{
        //use HttpURLConnection
 }

原因:在Froyo之后HttpURLConnection更稳定,而DefaultHttpClient在froyo和更小版本中的bug少。

参考:http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html Android包括两个HTTP客户端:HttpURLConnection和Apache HTTP Client。两者都支持HTTPS,流上传和下载,可配置的超时,IPv6和连接池。 Apache HTTP客户端在Android 2.2(Froyo)和早期版本中的错误较少。对于Android 2.3(Gingerbread)及更高版本,HttpURLConnection是最佳选择。其简单的API和小巧的尺寸使其非常适合Android。透明压缩和响应缓存可减少网络使用,提高速度并节省电池电量。有关两个HTTP客户端的比较,请参阅Android开发人员博客。

答案 1 :(得分:7)

使用哪个版本的Android真的很重要。请查看http://android-developers.blogspot.com/2011/09/androids-http-clients.html以获取Google的一些指导。

答案 2 :(得分:3)

DefaultHttpClient的抽象级别高于HttpUrlConnection。根据您的需要,任何一个都应该没问题。如果您不需要HttpUrlConnection的控制权,请坚持使用DefaultHttpClient