我在我的Android应用程序中进行了网络改造
api "com.squareup.retrofit2:retrofit:$retrofit2Version"
api "com.squareup.retrofit2:adapter-rxjava2:$retrofit2Version"
api "com.squareup.retrofit2:converter-scalars:$retrofit2Version"
api "com.squareup.retrofit2:converter-jackson:$retrofit2Version"
在开发我的项目时,使用
api "com.squareup.okhttp3:logging-interceptor:$okhttp3Version"
我将改装配置如下:-
abstract class BaseService {
internal val okHttpClient = OkHttpClient.Builder()
.connectTimeout(OK_HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS)
.readTimeout(OK_HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(OK_HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS)
.callTimeout(OK_HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS)
.followSslRedirects(true)
.retryOnConnectionFailure(true)
.followRedirects(true)
.addInterceptor(HTTP_HEADERS)
.addInterceptor(HTTP_LOGGING_INTERCEPTOR)
.build()
companion object {
private const val OK_HTTP_CLIENT_TIMEOUT: Long = 60
private val HTTP_LOGGING_INTERCEPTOR = HttpLoggingInterceptor()
private val HTTP_HEADERS = constructHeaderInterceptor()
private const val HTTP_ORIGIN_HEADER = "Origin"
private const val HTTP_ORIGIN_VALUE = "Android"
private fun constructHeaderInterceptor(): Interceptor {
return Interceptor {
val request = it.request()
val newRequest = request.newBuilder().addHeader(HTTP_ORIGIN_HEADER, HTTP_ORIGIN_VALUE).build()
it.proceed(newRequest)
}
}
init {
HTTP_LOGGING_INTERCEPTOR.level = HttpLoggingInterceptor.Level.NONE
}
}
}
然后在我的服务实施中:-
class Service private constructor() : BaseService(), Api {
private val service: Api
init {
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.client(okHttpClient)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(JacksonConverterFactory.create())
.addConverterFactory(ScalarsConverterFactory.create())
.build()
service = retrofit.create(Api::class.java)
}
override fun query(authenticationToken: String, request: Request): Single<Response<QueryResponse>> {
return service.query(authenticationToken, request)
}
companion object {
private val BASE_URL = BuildConfig.SDK_BASE_URL
private val INSTANCE = Service()
fun instance(): Api {
return INSTANCE
}
}
}
我面临的问题是
HttpLoggingInterceptor.Level.BODY
logcat的输出“过多”,因为我的一些网络调用响应是非常大的Json文档。
我想要的是,我可以在细粒度级别配置我的网络呼叫日志记录,例如逐个呼叫。
但我能看到如何实现这一点的唯一方法是创建一个成对的
OkHttpClient
&
retrofit
对于每个日志记录级别,例如。
BODY
,
HEADERS
,
BASIC
和
NONE
.
最好是能够逐个调用设置日志记录值,并且只使用单个
OkHttpClient
&
改造
例子
有没有办法在一个呼叫级别上设置不同的日志记录级别?