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
系统杀死,而且在拦截器有机会运行之前就会发生这种情况。