1. HttpClient只是一个单纯的网络请求类库,比HttpUrlConnection(ANDROIDSDK当中,Android2.3之前有问题)强大很多,可以对HTTP协议头和BODY部分进行方便的修改。 Android的SDK本身也纳入了HttpClient,但处理文件上传和下传不行,还需要使用APACHE的HttpClient。HttpClient没有处理多线程问题,使用者需要配合AsyncTask来使用,AsyncTask处理了线程问题。
Volley的HttpStack提供了两种实现,分别使用了HttpUrlConnection和HttpClient,老版本使用了HttpClient,新版本加入了HttpUrlConnection的HttpStack实现,并且缺省是使用HttpUrlConnection,用户可通过设置来使用HttpClient的HttpStack实现。
2. HttpClient没有提供缓存功能,而Volley实现图片缓存和HTTP的CACHE机制。
3. HttpClient是不能在UI线程里面调用的,否则会出现ANR问题,而Volley是可以在UI线程里面调用的,因为它自己已经使用了线程池来做网络请求,使用者需要提供回调函数来出来网络响应。
4. 使用VOLLEY还需要考虑线程资源关闭的问题,而HttpClient不需要管理这些。
5. 因为线程池的问题,HttpClient是同步调用,而VOLLEY是异步调用。
如果我们实现一个Network访问的Façade,提供HttpClient和Volley两种实现,那么在接口定义上面就需要考虑这两个框架调用上的不同,同步和异步问题。还要考虑资源释放的问题。