gpt4 book ai didi

spring - 如何强制 RestTemplate 使用 UTF-8 编码发送 multipart/form-data

转载 作者:行者123 更新时间:2023-12-02 16:04:52 44 4
gpt4 key购买 nike

我正在努力让我的多部分/表单数据在 RestTemplate 实体中以 UTF-8 编码。我不知道我做错了什么。下面我发布了我的代码

LinkedMultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("text", text);
map.add("id", id);

HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("Content-Type","multipart/form-data;charset=UTF-8");

HttpEntity<LinkedMultiValueMap<String, String>> entity = new HttpEntity<>(map, httpHeaders);

ListenableFuture<ResponseEntity<String>> response = asyncRestOperations
.postForEntity(url, entity, String.class);

当我将任何波兰语字母插入文本参数时,例如:“ł”其余模板将其作为“?”发送。您可以在下面看到,实际上正文看起来像这样,并且“ł”被转换为“?”:

Content-Disposition: form-data; name="text"
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 1
?

我不知道为什么它不能正常工作。如何将默认的 ISO-8859-1 编码更改为 UTF-8?非常感谢任何帮助!

干杯。

找到解决方案:

我稍微修改了我的 AsyncRestTemplate,它不再丢失 UTF-8 编码。我的工作代码:

AsyncRestTemplate asyncRestTemplate = new AsyncRestTemplate();
List<HttpMessageConverter<?>> messageConverters = asyncRestTemplate.getMessageConverters();

StringHttpMessageConverter stringMessageConverter = new StringHttpMessageConverter(Charset.forName("UTF-8"));
AllEncompassingFormHttpMessageConverter allEncompassingConverter = new AllEncompassingFormHttpMessageConverter();
allEncompassingConverter.setCharset(Charset.forName("UTF-8"));
allEncompassingConverter.setMultipartCharset(Charset.forName("UTF-8"));
allEncompassingConverter.setPartConverters(Collections.singletonList(stringMessageConverter));

for (Iterator<HttpMessageConverter<?>> iterator = messageConverters.iterator(); iterator.hasNext(); ) {
HttpMessageConverter conv = iterator.next();
if (conv instanceof AllEncompassingFormHttpMessageConverter) {
iterator.remove();
}
}
messageConverters.add(allEncompassingConverter);
asyncRestTemplate.setMessageConverters(messageConverters);

最佳答案

引用这里提供的答案Spring RestTemplate Charset UTF-8 does not work

为了支持特殊字符,您需要对数据进行编码。

关于spring - 如何强制 RestTemplate 使用 UTF-8 编码发送 multipart/form-data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642236/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com