json - 如何告诉 RestTemplate 使用 UTF-8 编码进行 POST?

标签 json spring resttemplate

我在使用 RestTemplate 以 UTF-8 编码发布 JSON 时遇到问题。 JSON 的默认编码是 UTF-8,因此媒体类型甚至不应该包含字符集。我试图将字符集放入 MediaType 中,但它似乎不起作用。

我的代码:

String dataJson = "{\"food\": \"smörrebröd\"}";
HttpHeaders headers = new HttpHeaders();
MediaType mediaType = new MediaType("application", "json", StandardCharsets.UTF_8);
headers.setContentType(mediaType);

HttpEntity<String> entity = new HttpEntity<String>(dataJson, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<Boolean> formEntity = restTemplate.exchange(postUrl, HttpMethod.POST, entity, Boolean.class);

最佳答案

您需要将 StringHttpMessageConverter 添加到带有字符集 UTF-8 的 rest 模板的消息转换器。像这样

RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters()
        .add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));

关于json - 如何告诉 RestTemplate 使用 UTF-8 编码进行 POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29392422/

相关文章:

json - ManifestV3 : "invalid value for web_accessible_resources" or "resources must be listed" errors

java - 具有相同模式 url 的多个路由

java - Kotlin+spring+mustache @Controller 不工作(Whitelabel 错误页面)但 @RestController 工作

java - 使用 postForObject 在 RestTemplate 响应中获取 InputStream 和 JSON

java - Http 响应内容类型为 json。 "Invalid mime type"错误

android - 使用 MultiPartEntityBuilder 从 Android 发送 JSON 数据时,无法在 Flask 服务器中使用 get_json()

json - 在 shell 中处理 json 时,如何正确地将多个 jq 语句链接在一起,例如使用 curl?

java - 使用 Spring RestTemplate 获取 JSON 对象列表

PHP/YQL/获取 : URL too long

ruby-on-rails - spring rspec连接不上数据库