Android知识点之网络底层封装:细数常用的网络请求框架

时间:2022-11-17 14:07:51

   Android知识体系更新如此之快,让人一不小心就会感觉,额,我out了,翻看之前的文章,14年、15年大家讨论的网络底层框架都是HttpURLConnection,HttpClient,细数二者的异同优劣,到后来推崇的AsyncTask+HttpClient,往事如风,流行的很快过去HttpClient已被废弃,到如今如果不用Okhttp、Volley、Retrofit好像都不好意思开口。


 1) HttpURLConnectionURLConnection的一个子类一个轻量级的http 客户端,HttpURLConnection URLConnection的基础上做了进一步改进,增加了一些用于操作http资源的便捷方法。


2) HttpClient就是一个增强版的HttpURLConnection,增加了一些功能,由于HttpClient API较多,体型较大升级和维护起来较为繁琐,Android团队在API 23(Android 6.0)中移除了对HttpClient的支持.

利用原生的这两种方式编写网络代码,需要自己考虑很多,获取数据或许可以,但是如果要将手机本地数据上传至网络,根据不同的web端接口,需要组织不同的数据内容上传,给手机端造成了很大的工作量。


     3) AsyncTask+HttpClient, 利用AsyncTask的一步功能和操作UI方面的优势,AsyncTask+HttpClient网络请求框架典型的实现使用上述AsyncTask+实现类和Httpclient进行上传并显示进度的功能,非常简单,使用AsyncTask异步上传。


4)OkHttp是 Square 公司开源的针对 Java 和 Android 程序,现在已被官方采用了吧。它是封装的一个高性能 http 请求库,核心功能与HttpUrlConnection 一样的,而且 OkHttp 又封装了线程池,封装了数据转换,封装了参数使用、错误处理等,API使用起来更加方便。可以把它理解成是一个封装之后的类似 HttpUrlConnection 的一个库,用HttpUrlConnection 时候需要自己开子线程,自己写Handler处理函数,而okHttp已经帮你封装好了,开好了线程,封装了回调函数,你只需要实现接口就行,贴心吧


5)Volley 是 Google 官方出的一套小而巧的异步请求库,该框架封装的扩展性很强,支持 HttpClient、HttpUrlConnection,甚至支持 OkHttp,Volley 里面也封装了 ImageLoader 。Volley 也有缺陷,比如不支持 post 大数据,所以不适合上传文件。不过 Volley 设计的初衷本身也就是为频繁的、数据量小的网络请求而生!


6) Retrofit 是 Square 公司出品的默认基于 OkHttp 封装的一套 RESTful 网络请求框架.好像水很深的样子... ...


总结:

如果需要上传大数据,推荐okhttp,否则推荐volley, Volley 的优势在于封装的更好,更容易使用,扩展性比较好,而okhttp优势在性能上。


参考文章:https://zhuanlan.zhihu.com/p/21879931