android之网络通信

android中进行Http通信的方式有多种,HttpURLConnection和HttpClient,okhttp以及Volley,那么这几种方式的区别是什么呢。
HttpURLConnection和HttpClient


HttpURLConnection和HttpClient其实是SDK中提供给我们的具体的网络通信工具类,那么他们两个的作用就是具体实现网络访问的两种方式。
HttpURLConnection和HttpClient的区别
在Android 2.3及以上版本,尽量使用HttpURLConnection,而在Android 2.2及以下版本,尽量使用HttpClient。
这是因为,虽然DefaultHttpClient和它的兄弟AndroidHttpClient都是HttpClient具体的实现类,它们都拥有众多的API,而且实现比较稳定,bug数量也很少,但是也由于HttpClient的API数量过多,Android团队其实难以去修改和维护,就导致后续的发展不太乐观。并且在android6.0之后,HttpClient已被移除,如果要使用他的话,需要自己手动导入第三方jar包了。
而HttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的API提供的比较简单,但是同时这也使得我们可以更加容易地去使用和扩展它。
HttpURLConnection封装比较简单,对HTTP请求的处理比较底层,使用起来并不是特别方便。
不过在Android 2.2版本之前,HttpURLConnection一直存在着一些令人厌烦的bug。比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效了。那么我们通常的解决办法就是直接禁用掉连接池的功能。


okhttp以及Volley
okhttp和Volley是对网络访问的一个更高层的封装,其实他们内部的源码也是调用上述两种通信方式去实现功能,只是在原有的基础上封装和拓展了功能。
okhttp以及Volley的区别
Volley在Android 2.3之前的版本内部使用的是HttpClient,到了2.3版本及之后用的则是HttpURLConnection。
okHttp内部使用的是HttpURLConnection。
Okhttp能胜任较复杂的网络通信,而Volley非常适合进行数据量不大,但通信频繁的网络操作。
【android之网络通信】具体差别见OkHttp和Volley的有什么区别?

    推荐阅读