HttpLoggingInterceptor不与日志记录2

我试图记录所有的请求(与网络拦截器)使用refrofit2,kotlin和日志拦截器:

  • 翻新:“2.0.2”
  • okhttp3:“3.2.0”
  • com.squareup.okhttp3:logging-interceptor 3.2.0

喜欢:

val interceptor = HttpLoggingInterceptor() interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); val okHttpClient = OkHttpClient.Builder() .addNetworkInterceptor(interceptor) // same for .addInterceptor(...) .connectTimeout(30, TimeUnit.SECONDS) //Backend is really slow .writeTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build() sRestAdapter = Retrofit.Builder() .client(okHttpClient) .baseUrl(if (host.endsWith("/")) host else "$host/") .addConverterFactory(GsonConverterFactory.create(gson())) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build() 

它只是打印:

 D/OkHttp: --> GET url... D/OkHttp: --> END GET 

发生什么事?

—————编辑——–

在主线程上做请求的错误不会被记录器显示出来,所以要小心。

代替

 val okHttpClient = OkHttpClient.Builder() .addNetworkInterceptor(interceptor) ... 

你应该有这样的东西:

 val okHttpClient = OkHttpClient.Builder() .addInterceptor(interceptor) ... 

因为addNetworkInterceptor()与侦听单个网络请求和响应的拦截器一起使用,而addInterceptor()添加拦截器,该侦听器观察每个调用的全部跨度:从连接建立(如果有的话)直到​​选择响应源原始服务器,缓存或两者)。

编辑

在主线程上做请求的错误不会被记录器显示出来,所以要小心

在主线程上进行联网并不是一个“普通”的错误。 这会导致你的应用程序被NetworkOnMainThreadException系统杀死,而且在拦截器有机会运行之前就会发生这种情况。