Dan*_*ico 5 android kotlin retrofit2
我试图使用refrofit2,kotlin和logging-interceptor记录所有请求(使用网络拦截器):
喜欢:
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()
Run Code Online (Sandbox Code Playgroud)
它打印:
D/OkHttp: --> GET url...
D/OkHttp: --> END GET
Run Code Online (Sandbox Code Playgroud)
怎么了?
---------------编辑--------
执行主线程请求的错误不会由记录器显示,因此请小心.
Mar*_*ski 10
代替
val okHttpClient = OkHttpClient.Builder()
.addNetworkInterceptor(interceptor)
...
Run Code Online (Sandbox Code Playgroud)
你应该有类似的东西:
val okHttpClient = OkHttpClient.Builder()
.addInterceptor(interceptor)
...
Run Code Online (Sandbox Code Playgroud)
作为addNetworkInterceptor()具有观察单个网络请求和响应的拦截器的播放,同时addInterceptor()添加观察每个调用的完整跨度的拦截器:从建立连接(如果有的话)直到选择响应源(原始服务器,缓存,或两者).
编辑
执行主线程请求的错误不会由记录器显示,因此请小心
在主线程上进行网络连接不是"普通"错误.这将导致你的应用程序被系统杀死NetworkOnMainThreadException,这将在拦截器被给予任何机会运行之前发生.
private val interceptor = run {
val httpLoggingInterceptor = HttpLoggingInterceptor()
httpLoggingInterceptor.apply {
httpLoggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
}
}
private 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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4192 次 |
| 最近记录: |