官方意见:
1) apache httpclient比较稳定点,少BUG,但由于API的关系,扩展改造麻烦点,
所以android team现在不鸟这东西了基本
2) httpurlconnection比较轻便,灵活,易于扩展,在2。2前有个BUG,
见http://code.google.com/p/android/issues/detail?id=2939
可以通过如下代码去解决:
private void disableConnectionReuseIfNecessary() {
// HTTP connection reuse which was buggy pre-froyo
if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { System.setProperty("http.keepAlive", "false");
}
}
3) 在Gingerbread中,httpurlconnection会增加对压缩报文头的处理,服务端可以用
GZIP,详细见:
http://developer.android.com/reference/java/net/HttpURLConnection.html
4) 对HTTPURLCONECTION中,在3。0后以及4。0中都进行了改善,比如对HTTPS的支持,
在4。0中,还增加了对缓存的支持呢!比如下面的代码:
private void enableHttpResponseCache()
{
try {
long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
File httpCacheDir = new File(getCacheDir(), "http");
Class.forName("android.net.http.HttpResponseCache").getMethod("install", File.class, long.class.invoke(null, httpCacheDir, httpCacheSize);
}
catch
(Exception httpResponseCacheNotAvailable) {
}
}
谷歌的的建议是,Gingerbread后的版本,都建议用httpurlconnection,获得更高的性能
5)在androidSDk中httpclient使用的是4.0beta2,我不得不说这个版本里面有些蛋疼的bug:
I.auth caching;
II.在4.0上的sdk,将wifi和3g同时打开,理论上来说,网络接口应该走wifi,但是却走了代理,导致访问服务器网络失败;
解决上面问题的唯一办法就是引入“http://code.google.com/p/httpclientandroidlib/”中的库,然后修改相应的类,典型的例子就是ThreadSafeClientConnManager变成了PoolingClientConnectionManager。
个人意见:
我对谷歌官方开发同事的意见有点不敢雷同,个人更倾向于使用httpclient,因为从PoolingClientConnectionManager得解释我们就可以知道:
Manages a pool of {@link OperatedClientConnection client connections} and is able to service connection requests from multiple execution threads.
Connections are pooled on a per route basis. A request for a route which already the manager has persistent connections for available in the pool will be services by leasing a connection from the pool rather than creating a brand new connection.
可以节省我们频繁建立连接的时间,往往在我们的app里面更多的情况是,不断的去下拉列表调用接口,反复创建连接的代价可想而知。
请注意关注我后面的文章,我会对apache的httpclient 4.2版本的架构做全面地分析。
分享到:
相关推荐
是android的jar中httpclient的源码,是org.apache.http包的源码。其中包含org.apache.http.HttpResponse类。 不是官网上下载的,官网上的源码里面没有org.apache.http.HttpResponse这个类。
Android使用HttpClient发送请求、接收响应很简单,只要如下几步即可: Step1:创建HttpClient对象; Step2:如果需要发送GET请求,则创建HttpGet对象; 如果需要发送POST请求,则创建HttpPost对象; Step3:如果...
里面详细的写了post和get和HttpPost和HttpGet请求
本文并不针对HTTP协议的具体内容,仅探讨android开发中使用HTTP协议访问网络的两种方式——HttpURLConnection和HttpClient 因为需要访问网络,需在AndroidManifest.xml中添加如下权限 <uses android:name=...
Android Asynchronous HTTPClient的实现和优化
Android HttpUrlConnection使用方法 post and get json.
Android 使用HttpClient代理
Android HttpClient基本使用方法 测试过能用。
Android-异步HttpClient框架,采用两种提交方式 Android-异步HttpClient框架(get和post) Android-异步HttpClient框架 csdn博客地址:http://blog.csdn.net/u014657752
该压缩包中包含3个小程序,第一个是使用HttpURLConnection获取网络资源,包括直接获取、使用get方式获取、使用post方式获取、以及获得网络图片;第二个小程序是使用HttpClient获取网络资源,包括get方式和post方式;...
Android的HttpClient开发实例。欢迎下载学习
android HttpClient 获取网络图片 实例
HttpURLConnection请求和HttpClient请求...................................................................
httpclient-android Build script and dependencies to create repackaged upstream version of HttpClient and depdendencies (HttpMime, HttpCore, HttpClient-Cache) and get it working on Android API version...
NULL 博文链接:https://xiaowei-qi-epro-com-cn.iteye.com/blog/1973295
Android利用HttpClient实现访问web服务器源码 剥离出HttpClient代码,用来做网页爬虫亦可
Android使用HttpClient上传文件到服务器完整实例,包括要用到的jar都下libs下面,服务器的源码也有
Android平台HttpClient的使用-手机号码归属地查询
打包的一个资源,案例,有需要的可以下载Android_HttpClient_jar包+HttpClientJarAndSource
介绍了Android 中HttpURLConnection与HttpClient使用的简单实例,有需要的朋友可以参考一下