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非常适合进行数据量不大,但通信频繁的网络操作。

具体差别见OkHttp和Volley的有什么区别?

你可能感兴趣的:(android之网络通信)