在开发过程中使用Okhttp addNetworkInterceptor添加StethoIntrceptor()时,如果使用如下代码
var ok =OkHttpClient() ok.networkInterceptors().add(StethoInterceptor())
会出现UnsupportedOperationException的错误,必须使用
okhttpClict = OkHttpClient.Builder().addNetworkInterceptor(StethoInterceptor()).build()
进行添加。
原因如下:
查看OkHttp的原码发现在new OkHttpClient()时会自动new Builder(),原码如下:
public OkHttpClient() { this(new Builder()); }
调用OkHttpClient(Builder builder),此构造方法如下:
OkHttpClient(Builder builder) {
this.dispatcher = builder.dispatcher;
this.proxy = builder.proxy;
this.protocols = builder.protocols;
this.connectionSpecs = builder.connectionSpecs;
this.interceptors = Util.immutableList(builder.interceptors);
this.networkInterceptors = Util.immutableList(builder.networkInterceptors);
this.proxy