私はこのようなものを手に入れました:
private val client = HttpClient {
install(JsonFeature) {
serializer = GsonSerializer()
}
install(ExpectSuccess)
}
次のようなリクエストを行います
private fun HttpRequestBuilder.apiUrl(path: String, userId: String? = null) {
header(HttpHeaders.CacheControl, "no-cache")
url {
takeFrom(endPoint)
encodedPath = path
}
}
しかし、要求と応答の本文を確認する必要があります。それを行う方法はありますか?コンソール/ファイル内?
response
でHttpReceivePipeline
を処理する必要があるようです。 Originの応答を複製して、ログ記録の目的で使用できます。
scope.receivePipeline.intercept(HttpReceivePipeline.Before) { response ->
val (loggingContent, responseContent) = response.content.split(scope)
launch {
val callForLog = DelegatedCall(loggingContent, context, scope, shouldClose = false)
....
}
...
}
実装例は次の場所にあります: https://github.com/ktorio/ktor/blob/00369bf3e41e91d366279fce57b8f4c97f927fd4/ktor-client/ktor-client-core/src/io/ktor/client/features/observer/ ResponseObserver.kt そして次のマイナーリリースでクライアント機能として利用可能になるでしょう。
ところで:リクエストに同じスキームを実装できます。
Kotlin Loggingをチェックしてください https://github.com/MicroUtils/kotlin-logging 多くのオープンソースフレームワークで使用され、すべてのきれいな印刷を処理します。
次のように簡単に使用できます。
private val logger = KotlinLogging.logger { }
logger.info { "MYLOGGER INFO" }
logger.warn { "MYLOGGER WARNING" }
logger.error { "MYLOGGER ERROR" }
これにより、コンソールにメッセージが出力されます。