现在常用的网络请求方式主要有:Apache HttpClient、JDK HttpURLConnection、OKHttp。
一、HttpClient
优势
HttpClient 是Apache的一个三方网络框架,网络请求做了完善的封装,api众多,用起来比较方便,开发快。实现比较稳定,bug比较少。
劣势
正式由于其api众多,使我们很难再不破坏兼容性的情况下对其进行扩展。
二、HttpURLConnection
优势
HttpURLConnection是一个多用途、轻量级的http客户端,由JDK实现,容易的扩展和优化的HttpURLConnection,不依赖第三方库。
劣势
对网络请求的封装没有HttpClient彻底,api比较简单,用起来没有那么方便,而且存在一定的bug。
三、OkHttp
okhttp是专注于提升网络连接效率的http客户端。
优势
-
它能实现同一ip和端口的请求重用一个socket,这种方式能大大降低网络连接的时间,和每次请求都建立socket,再断开socket的方式相比,降低了服务器的压力。
-
okhttp 对http和https都有良好的支持。
-
成熟的网络请求解决方案,比HttpURLConnection更好用。
劣势
okhttp请求网络切换回来是在线程里面的,不是在主线程,不能直接刷新UI,需要我们手动处理,比较麻烦。
彩蛋
这里提供一套基于Okhttp3,应用于Spring Cloud微服务中的Http-Client-Plus框架。
- 动态配置超时时间
- 收集第三方请求日志
- Prometheus监控