当前很多项目直接使用Retrofit+okHttp的组合,其实是不需要知道实际的访问的url链接的,但今天调试的时候刚好碰上了需要记录的场景,所以记录一下,防止以后忘记
private val okHttpClient = OkHttpClient.Builder().run {
connectTimeout(60, TimeUnit.SECONDS)
readTimeout(60, TimeUnit.SECONDS)
writeTimeout(60, TimeUnit.SECONDS)
callTimeout(60, TimeUnit.SECONDS)
addNetworkInterceptor(Interceptor { chain ->
Log.e("sdfa", "chain url = ${chain.request().url}")
Log.e("sdfa", "chain headers = ${chain.request().headers}")
Log.e("sdfa", "chain body = ${chain.request().body}")
//将长连接改为一次性请求,防止资源浪费
val request: Request =
chain.request().newBuilder().addHeader("Connection", "close").build()
chain.proceed(request)
})
build()
}
可以通过addInterceptor的方式,从chain中获取实际访问的url,也就是baseUrl加上各种参数之后的最终url