每次在文章的开头,都会感叹volley的面向接口的编程思想。当刚刚写本篇文章时,对这种思想突然有了更深一层的理解,在volley的核心流程中,往往都是接口在冲锋陷阵,这样的话,扩展性是极强的,因为你可以使用volley默认的实现类,也可以自己定义自己的实现类。非常优秀的框架设计,得好好研究研究怎么应用在自己的项目中。
嘿嘿,就不感叹volley了。
这里主要说下volley中的响应Response和NetworkResponse,以及二者之间的关系,注意了,这是两个单独的没有什么关系的类。
关于响应的三个类,区分一下:
1.HttpResponse:这是android原生的类,不是volley中定义的,在发出网络请求后就会返回该响应,在这里提一下主要是为后两者做个说明。该类中封装了响应的所有信息,如状态行、响应头、响应体等信息。
2.NetworkResponse:应当记得,在BasicNetwork执行网络请求的方法返回值就是该类:
public NetworkResponse performRequest(Request<?> request) throws VolleyError
对于该类可以理解为:将HttpResponse内比较重要的信息如状态行、响应头、响应体等信息抽取出来,跟volley中的一些业务信息合并成一个volley中特有的响应类。
3.Resposne:该类中定义了两个接口,主要是为volley的使用者提供的,分别是网络请求成功的回调和网络请求失败的回调。另外该类中封装了响应的数据体和数据体对应的JavaBean对象。那么Response和NetworkResponse的关系呢?注意在类Networkdispatcher中有这么一行代码:
// Parse the respons