发送octet-stream格式的请求返回乱码处理

简介: octet-stream格式的请求返回乱码处理

问题:发送octet-stream格式Content-Type=application/octet-stream的请求,导致返回的消息中,中文也被编码成了octet-stream,无法直接解析,总是乱码

解决方案:给resttemplate的stringhttpmessageconverter设置charset

这里是设置charset

public RestTemplate createRestTemplate(SimpleClientHttpRequestFactory factory) {

       RestTemplate restTemplate = new RestTemplate(factory);

       List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();

       for (HttpMessageConverter<?> messageConverter : messageConverters) {

           if (messageConverter instanceof StringHttpMessageConverter) {

               ((StringHttpMessageConverter) messageConverter).setDefaultCharset(StandardCharsets.UTF_8);

           }

       }

       return restTemplate;

   }

private void Post(byte[] data) {

       try {

           SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();

           requestFactory.setConnectTimeout(3000);

           requestFactory.setReadTimeout(10000);

           RestTemplate restTemplate=createRestTemplate(requestFactory);

           HttpHeaders headers = new HttpHeaders();

           headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

           headers.add("Domain", "Domain");

           headers.add("Content-Type", "application/octet-stream");

           headers.add("Asr-Protocol", "1");

           HttpEntity<byte[]> entity = new HttpEntity<>(data, headers);

           ResponseEntity responseEntity = restTemplate.postForEntity(JDFinanceEngineTrans.RequestURL,entity, String.class);

           if (responseEntity.getStatusCode() != org.springframework.http.HttpStatus.OK) {

               log.error("Post result failed.status={}", responseEntity.getStatusCodeValue());

           }

           String result = responseEntity.getBody().toString();

           log.info("JD ASR response:{}",result);

           asrResults.add(result);

       } catch (Exception ex) {

           log.error("Post result failed.{}", ex.getMessage());

       }

   }

相关文章
|
JSON 小程序 JavaScript
小程序读取几种不同格式json数据(小程序json解析)
小程序读取几种不同格式json数据(小程序json解析)
193 0
|
13天前
|
算法
记一次requests.get()返回数据乱码问题
【10月更文挑战第21天】使用`requests.get()`请求网页时遇到乱码问题,尝试通过设置`encoding`和使用`apparent_encoding`自动判断编码均无效。最终发现问题是由于请求头中的`Accept-Encoding`包含了`br`(Brotli压缩格式),导致响应内容未被正确解压。移除`Accept-Encoding`中的`br`后,问题得到解决。
|
1月前
|
JSON API 数据格式
postman如何发送json请求其中file字段是一个图片
postman如何发送json请求其中file字段是一个图片
117 4
|
2月前
|
JSON 数据格式
Blob格式转json格式,拿到后端返回的json数据
文章介绍了如何将后端返回的Blob格式数据转换为JSON格式,并处理文件下载和错误提示。
86 0
Blob格式转json格式,拿到后端返回的json数据
|
4月前
|
JSON 数据格式
Navicate数据报错之Bad Request,发送端口测试的时候,使用JSON字符串,而不是Text
Navicate数据报错之Bad Request,发送端口测试的时候,使用JSON字符串,而不是Text
|
6月前
Response响应字符数据及响应字节数据
Response响应字符数据及响应字节数据
91 0
|
JSON C# 数据格式
使用C#语言来进行json串的接收
使用C#语言来进行json串的接收
|
JSON 数据格式 Python
python POST发送多个段(如json消息+文件)
python POST发送多个段(如json消息+文件)
192 0
Response响应字符数据
Response响应字符数据
83 0
Response响应字符数据