okhttp3,HttpUrlConnection,HttpClient小记

基于协议的项目(脱机模拟,爬虫脚本)少不了对http请求的操作,今天针对Java中主要的三个http支持库进行研究。
差别:
httpClient是一个早期的重量级网路应用框架,在安卓5.0之前使用,6.0逐渐被删除。重量级框架的优点是API全面,兼容性强大,缺点则是难以扩展,所以慢慢的被后续产品取代。加密

首先是HttpClient
作为apche的亲儿子,HttpClient在网络请求做了完善的封装,api众多,用起来比较方便,开发快。实现比较稳定,bug比较少,但是正式由于其api众多,是我们很难再不破坏兼容性的情况下对其进行扩展。所以,Android团队对提升和优化httpclient积极性并不高。android5.0被废弃,6.0逐渐删除。
其次是HttpURLConnection
作为取代HttpClient的HttpURLConnection是一个多用途、轻量级的http客户端。它对网络请求的封装没有HttpClient彻底,api比较简单,用起来没有那么方便。但是正是由于此,使得我们能更容易的扩展和优化的HttpURLConnection。不过,再android2.2之前一直存在着一些令人烦的bug,比如一个人可读的inputstream调用它的close方法的时候,会使得连接池实效,通常的做法就是禁用连接池。因此,在android2.2之前建议使用稳定的HttpClient,android2.2之后使用更容易扩展和优化的HttpURLConnection。

OkHttp3
okhttp是专注于提升网络连接效率的http客户端。
1、它能实现同一ip和端口的请求重用一个socket,这种方式能大大降低网络连接的时间,和每次请求都建立socket,再断开socket的方式相比,降低了服务器服务器的压力。
2、okhttp 对http和https都有良好的支持。
3、okhttp 不用担心android版本变换的困扰。
4、成熟的网络请求解决方案,比HttpURLConnection更好用。
5、缺点,okhttp请求网络切换回来是在线程里面的,不是在主线程,不能直接刷新UI,需要我们手动处理。封装比较麻烦。

扩展:Retrofit
是一个 RESTful 的 HTTP 网络请求框架的封装,但网络请求不是Retrofit来完成的,它只是封装了请求参数、Header、Url、返回结果处理等信息,而请求是由OkHttp3来完成的。

posted @ 2022-01-25 17:59  DasNI  阅读(729)  评论(0)    收藏  举报