java okhttp包的类特色

一、开始使用这个包时候不习惯,以为api用起来很别扭,无论是Request okhttpClient formBody只要是设置啥,就必须使用类里面的Builder类,而后一个方法接受一个参数,不停地调用每个方法来接受一个参数进行属性设置,以前的py requests都是一个方法接受完各类参数就了事了。api

 二、OkHttpClient类两个构造方法。默认构造方法调用下面的有参构造方法,能够传一个构造好的Builder的实例到OkHttpClient类进行实例化。ide

但通常是OkHttpClient.Builder().funa(xx).funb(yy).func(zz).build()的方式来获得一个OkHttpClient.类型的实例。ui

  Builder类是OkHttpClient类里面的一个静态类,因此才能用OkHttpClient.Builder()这种方式,而后就是用Bulider类里面的方法进行各类设置了。能连续的进行.funa(xx).funb(yy).func(zz)这种链式操做,是他在设置属性后,还返回了自身(this)。进行了OkHttpClient.Builder().funa(xx).funb(yy).func(zz)这一系列操做后获得的是一个Bulider类的实例,这还不是OkHttpClient类的实例。最后执行builder实例的buid()方法,把自身传到OkHttpClient的构造方法了,这才获得的是OkHttpClient的实例。this

三、okhttp这个包里面的各个类基本都是有个类中类Builder,而后调用Bulider的各类方法进行设置,最后执行build,把builder实例自身传到Builder的上级类的构造方法。只有大体搞清楚了才能好好的调用他的api,否则会不知道到了哪一步获得的是什么类型的实例了,和为何能够连续链式操做。spa

 

 

Bulider类3d