如何删除 Ktor 客户端 2.0.0 的默认 header

How to remove default header for Ktor client 2.0.0

Ktor v2.0.0 Android.

默认的 ktor header“接受”只是覆盖了我的“接受”header。

这是我初始化 HttpClient 的方式:

  HttpClient(Android) {
    defaultRequest {
        header("Key", BuildConfigCore.API_KEY)
        header("Accept", "application/vnd.***.mobile-v8+json")
      
        host = hostAddress
        url.protocol = URLProtocol.HTTPS
    }
    install(Logging) {
        if (BuildConfig.DEBUG) {
            logger = Logger.DEFAULT
            level = LogLevel.ALL
        }
    }
    install(ContentNegotiation) {
        gson()
    }
    expectSuccess = false
}

但是当我检查 Charles 拦截器时,我的 headers 看起来像:

我有那个

application/json

这会覆盖我的 application/vnd... 值。

是否有任何方法可以替换默认的“接受”header?

您可以从 defaultRequest 块中删除 Accept header 并为 GsonConverter 注册您的内容类型,而不是使用默认的 application/json 内容类型。

val client = HttpClient {
    install(ContentNegotiation) {
        gson(ContentType("application", "vnd.***.mobile-v8+json"))
    }
}