Android上的DefaultHttpClient或HttpURLConnection

Mik*_*e D 9 java android

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

我遇到过这篇文章,通过声明HttpURLConnection是发出HTTP请求的首选方法,我已经成功使用了HttpsURLConnection.

当搜索答案或阅读其他示例代码(甚至是最近的帖子)时,似乎都使用了DefaultHttpClient,这似乎违背了Google的官方消息.

我试图尽可能地证明我的Android应用程序.考虑到这一点,是HttpURLConnection最好的选择吗?

Ash*_*Ash 13

如果你也支持2.2,最好的方法可能是同时使用DefaultHttpClient或HttpURLConnection

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

原因:在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开发人员博客.


ads*_*tro 7

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


Aar*_*ver 3

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