有一个服务文件:
interface DevbyteService {
@GET("devbytes.json")
fun getPlaylist(): Deferred<NetworkVideoContainer>
}
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
object Network {
// Configure retrofit to parse JSON and use coroutines
private val retrofit = Retrofit.Builder()
.baseUrl("https://devbytes.udacity.com/")
.addConverterFactory(MoshiConverterFactory.create(moshi))
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.build()
val devbytes = retrofit.create(DevbyteService::class.java)
}
因此,我得到了 NetworkVideoContainer 的列表。这很好用,但我还想看到一个原始的 json 答案,例如在日志中。 怎么做?
最佳答案
对于 Retrofit,您应该使用 HttpLoggingInterceptor
在你的 build.gradle
文件中添加依赖,如下所示
implementation("com.squareup.okhttp3:logging-interceptor:4.4.0")
然后如下所示为 Retrofit 对象设置一个 HttpLoggingInterceptor
private val retrofit = Retrofit.Builder()
.baseUrl("https://devbytes.udacity.com/")
.addConverterFactory(MoshiConverterFactory.create(moshi))
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.client(okHttpClient)
.build()
private val okHttpClient = OkHttpClient.Builder().addInterceptor(
HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
).build()
如果出现弃用警告,只需将 setLevel
更改为:
level = HttpLoggingInterceptor.Level.BODY
上面的解决方案给你的 logcat 消息与由
设置的旧消息非常相似 level = RestAdapter.LogLevel.FULL
关于android - Retrofit2+Kotlin 如何在获取响应作为数据类时查看原始 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60478661/