另见http://blog.csdn.net/mingli198611/article/details/8766585

在官方blog中,android工程师谈到了如何去选择apache client和httpurlconnection的问题: 

  原文见http://android-developers.blogspot.com/2011/09/androids-http-clients.html 

这里小结下几点。 



1) apache httpclient比较稳定点,少BUG,但由于API的关系,扩展改造麻烦点, 

所以android team现在不鸟这东西了基本 



2) httpurlconnection比较轻便,灵活,易于扩展,在2。2前有个BUG, 

见http://code.google.com/p/android/issues/detail?id=2939 

  可以通过如下代码去解决:

  1. private void disableConnectionReuseIfNecessary() {
  2. // HTTP connection reuse which was buggy pre-froyo
  3. if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) {        System.setProperty("http.keepAlive", "false");
  4. }
  5. }

3) 在Gingerbread中,httpurlconnection会增加对压缩报文头的处理,服务端可以用 

GZIP,详细见: 

  http://developer.android.com/reference/java/net/HttpURLConnection.html 



4) 对HTTPURLCONECTION中,在3。0后以及4。0中都进行了改善,比如对HTTPS的支持, 

在4。0中,还增加了对缓存的支持呢!比如下面的代码:

  1. private void enableHttpResponseCache()
  2. {
  3. try {
  4. * 1024 * 1024; // 10 MiB
  5. File httpCacheDir = new File(getCacheDir(), "http");
  6. Class.forName("android.net.http.HttpResponseCache").getMethod("install", File.class, long.class.invoke(null, httpCacheDir, httpCacheSize);
  7. }
  8. catch
  9. (Exception httpResponseCacheNotAvailable) {
  10. }
  11. }

最后的建议,Gingerbread后的版本,都建议用httpurlconnection,获得更高的性能




另有文章:

以下是官方原文(地址:http://developer.android.com/training/basics/network-ops/connecting.html)

---------------原文-------------------------

Most network-connected Android apps use HTTP to send and receive data. Android includes two HTTP clients: HttpURLConnection and
Apache HttpClient.
Both support HTTPS, streaming uploads and downloads, configurable timeouts, IPv6, and connection pooling. We recommend using HttpURLConnection for
applications targeted at Gingerbread and higher. For more discussion of this topic, see the blog post Android's
HTTP Clients
.


Android网络连接的两种方法:apache client和httpurlconnection的比较的更多相关文章

  1. Android 抗锯齿的两种方法

    Android 抗锯齿的两种方法 (其一:paint.setAntiAlias(ture);paint.setBitmapFilter(true))   在Android中,目前,我知道有两种出现锯齿 ...

  2. android emulator启动的两种方法详解

    android emulator启动的两种方法详解    转https://blog.csdn.net/TTS_Kevin/article/details/7452237 对于android学习者,模 ...

  3. android使用全局变量的两种方法

         在我们使用android编写程序的时候,少不了想利用全局变量,但是面向对象语言和过程语言区别很大,不再是include就可以的.这里我写了使用全局变量的两种方法: 1.使用applicati ...

  4. [转]android使用全局变量的两种方法

    本文转自:http://blog.csdn.net/feiyangxiaomi/article/details/9966215 在我们使用android编写程序的时候,少不了想利用全局变量,但是面向对 ...

  5. Android网络操作的几种方法

    安卓开发软件:AndroidStudio 服务器软件:Myeclipse+Tomcat 首先无论是哪种方式,安卓手机软件要想联网,必须要申请联网权限(android.permission.INTERN ...

  6. Android访问WebService的两种方法

    首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.详细见:http://baik ...

  7. (转)Android创建桌面快捷方式两种方法

    [IT168技术]Android在桌面上生成快捷方式有两种情况,一种是直接在桌面直接生成;一种是长按桌面,在弹出的快捷菜单中生成. 谈谈在桌面上直接生成.个人觉得这个比较爽快,既然都是快捷方式了干嘛还 ...

  8. android 实现分享功能两种方法

    当我想做一个智能的记事本的时候,我就在尝试自己写一组分享功能.后来才知道,原来每个社交软件中都有自己的分享接口. 这就大大减少了我们的代码量了. 第一种方法:特点--简单 package com.ex ...

  9. Android apk签名的两种方法

    编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 为了保证 ...

随机推荐

  1. No-args constructor for class does not exist. Register an InstanceCreator with G

    有时候我们在使用Googel官方的json解析包时,如果自己的实体类中出现代参的构造函数.在1.4的jar中,如果类造型中有参数,就会调用不了无参构造器,(如:HashMap的构造器就会有参数) 参考 ...

  2. 基于zigbee与tiny4412开发板的环境监测系统

    一.开发板环境搭建 1.tiny4412   linux系统的布置 参考博客:http://www.cnblogs.com/luoxiang/p/4186391.html 二.boa服务器的搭建 下载 ...

  3. uva 227 Puzzle

     Puzzle  A children's puzzle that was popular 30 years ago consisted of a 5x5 frame which contained ...

  4. java中连接postgresql基本代码

    try { Class.forName( "org.postgresql.Driver" ).newInstance(); String url = "jdbc:post ...

  5. 解决Sqlite UTF-8中文数据格式在DOS窗口下中文乱码

    问题如下图所示: 右键查看DOS属性:点击选项->当前代码页为GBK 只要将当前代码页编码值设置为UTF-8就可以了: ‘退出sqlite:.exit 输入:chcp 65001回车 右键属性: ...

  6. hdu 1595 find the longest of the shortest

    http://acm.hdu.edu.cn/showproblem.php?pid=1595 这道题我用spfa在枚举删除边的时候求最短路超时,改用dijkstra就过了. #include < ...

  7. CoFun 1612 单词分组(容斥)

    Description Stan有N个不同的单词,这天,Stan新结交的两个朋友来他这里玩,Stan作为主人,他需要送给他们单词,但由于Stan不能偏心,所以Stan给每个单词一个权值v_i,他需要他 ...

  8. MS Build参考

    以下链接很详细的讲述了Build方面相关的知识,顺带连Link的参数都解释了,以后不知道就来这里查一查了. http://msdn.microsoft.com/zh-CN/library/ee8624 ...

  9. DBA 经典面试题(2)

    三.备份恢复类   ================================================================================   1:备份如何分 ...

  10. 《Java程序员面试笔试宝典》之Static关键字有哪些作用

    static关键字主要有两种作用:第一,只想为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关.第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,在不创建对象的情况下就可以通过 ...