Android下网络通信接口

Android平台有三种网络接口可以使用,他们分别是:java.net(标准Java接口)、Org.apache接口和Android.net(Android网络接口)。

1.java.net
JDK提供的与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见Http处理等。比如:创建URL,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据、从服务器读取数据等通信。

2.Apache接口
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包。但是在Android API 22中取消了HttpClient的相关类,如果要使用,需要单独导入apache HttpClient
3.Android.net
常常使用此包下的类进行Android特有的网络编程,如:访问WiFi,访问Android联网信息,邮件等功能。

关于HttpClient 和HttpURLConnection

大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。点进阿帕奇官网在apache HttpClient part for Android Background,上面Background介绍,在谷歌 Android1.0版本的时候,把apache 4.0版本整合进去了。当时4.0也算是一个比较成熟的项目了,Apache官方开始认为Android随着升级会把HttpClient也会升级整合。可是谷歌却没有这么做。所以慢慢的Android就停止维护开发Android里面的HttpClient,而Apache官方的也慢慢的随着维护升级也变成了一个分支。最后Android不维护Android自带的HttpClient并同时拒绝升级apache官方的HttpClient,理由是不兼容。所以Apache 官方就推出了针对Android的HttpClicent。现在是兼容Android里的旧版本API,防止有冲突。以前可能我们用的时候导入,会发生冲突,到 apache HttpClient 4.3,已经开始兼容Android里的。以前使用3.X 的commons的版本的用户,apache也强烈建议升级为最新的。
所以,Android API 22中提到的废弃Android HttpClient 我觉得一部分原因也可能是因为这个。Android废弃HttpClient与apache官方提供的HttpClient没有任何关系。我们照样可以继续使用第三方的HttpClient(apache)

HttpClient
DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具体的实现类,它们都拥有众多的API,而且实现比较稳定,bug数量也很少。
但同时也由于HttpClient的API数量过多,使得我们很难在不破坏兼容性的情况下对它进行升级和扩展,所以目前Android团队在提升和优化HttpClient方面的工作态度并不积极。

HttpURLConnection

HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。

哪一种才是最好的?

在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择。
而在Android 2.3版本及以后,HttpURLConnection则是最佳的选择。它的API简单,体积较小,因而非常适用于Android项目。压缩和缓存机制可以有效地减少网络访问的流量,在提升速度和省电方面也起到了较大的作用。对于新的应用程序应该更加偏向于使用HttpURLConnection。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值