在构建旨在与移动设备交互的Web服务时,我不确定在Android上实现HTTP请求的最佳方法是什么。
我遇到过这篇文章,最后说明HttpURLConnection
是发出HTTP请求的首选方法,我使用HttpsURLConnection
取得了成功。
在搜索答案或阅读其他示例代码时(即使是相当近期的帖子),所有人似乎都使用DefaultHttpClient
,这似乎与Google的官方消息相悖。
我正在尝试尽可能地证明我的Android应用程序。考虑到这一点,HttpURLConnection
是最佳选择吗?
答案 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
。