未解决的参考:ktor 中的 responsePipeline

Unresolved reference: responsePipeline in ktor

嘿,我在 ktor 工作。我正在关注这个 。我想在我的 androidMain 上使用 responsePipeline。但是我收到错误 Unresolved reference: responsePipeline。实际上我在 androidMain 中用 OkHttp 创建了 HttpClient。我不知道为什么我不能在我的文件中使用。有人可以指导我吗?

androidMain

actual fun httpClient(config: HttpClientConfig<*>.() -> Unit) = HttpClient(OkHttp) {
    responsePipeline.intercept(HttpResponsePipeline.Transform) {
    }
    config(this)
    install(Logging) {
        logger = Logger.SIMPLE
        level = LogLevel.BODY
    }
}

commonMain

expect fun httpClient(config: HttpClientConfig<*>.() -> Unit = {}): HttpClient

错误

responsePipelineHttpClient class 的 属性,而您正试图在 HttpClientConfig.[=21= 的实例上访问它]

HttpClient(OkHttp) 的 Lamda returns 类型 HttpClientConfig 的对象没有名为 reponsePipeline 的 属性。

要使用 responsePipeline 你必须创建一个 HttpClient 的实例,然后你就可以使用它了。

您可以创建一个方法,returns 您配置的 httpClient

fun createHttpClient(config: HttpClientConfig<*>.() -> Unit): HttpClient {
    val httpClient = HttpClient(OkHttp) {
        config(this)
        install(Logging) {
            logger = Logger.SIMPLE
            level = LogLevel.BODY
        }
    }
    httpClient.responsePipeline.intercept(HttpResponsePipeline.Transform) {

    }
    return httpClient
}

将其分配给实际定义。

actual fun httpClient(config: HttpClientConfig<*>.() -> Unit) = createHttpClient(config)