如何在 Ktor 客户端中设置内容类型字符集(不是接受字符集)

Posted

技术标签:

【中文标题】如何在 Ktor 客户端中设置内容类型字符集(不是接受字符集)【英文标题】:How do I set a Content Type Charset in Ktor client (Not an accept charset) 【发布时间】:2020-06-05 21:02:11 【问题描述】:

这里是初学者, 有没有其他方法可以添加 Content-Type Charset 而不是 header("Content-Type", "application/json; charset=UTF-8")

val client = HttpClient 
            Charsets 
                Charsets.UTF_8
             // This sets the accept header only, does not set the content type charset
        
 client.put<HttpResponse> 
            contentType(ContentType.Application.Json)
            url(url)
            body =body
        

但是这有效

 client.put<HttpResponse> 
            header("Content-Type", "application/json; charset=UTF-8")
            contentType(ContentType.Application.Json)
            url(url)
            body = body
        

非常感谢。

【问题讨论】:

【参考方案1】:

要使用 Ktor API 指定标头,您必须给它一个参数:

client.put<HttpResponse> 
    contentType(ContentType.Application.Json.withParameter("charset", "utf-8"))
    url(url)
    body = body

【讨论】:

以上是关于如何在 Ktor 客户端中设置内容类型字符集(不是接受字符集)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ktor 中设置类似于 Retrofit 的`Retrofit.Builder().baseUrl(baseUrl) 的 basePath?

如何强制浏览器在内容类型 http 标头中设置字符集

Ktor:无法解析 JacksonSerializer

在嵌入式Jetty中设置默认字符编码和内容类型

谁在 Spring MVC (@ResponseBody) 中设置响应内容类型

如何使用 ktor kotlin 通过 POST 发送 JSON 字符串?