发送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());

       }

   }

相关文章
|
3月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
3月前
Response响应字符数据及响应字节数据
Response响应字符数据及响应字节数据
58 0
|
前端开发
如何在前端下载后端返回的文件流时,获取请求头中的文件名称?
如何在前端下载后端返回的文件流时,获取请求头中的文件名称?
1129 0
Jmeter返回响应体写入txt文件的操作
Jmeter返回响应体写入txt文件的操作
167 0
|
JSON 数据格式 Python
python POST发送多个段(如json消息+文件)
python POST发送多个段(如json消息+文件)
185 0
|
JSON Java fastjson
controller发送请求接收返回json
controller发送请求接收返回json
212 0
controller发送请求接收返回json
|
应用服务中间件
设置请求编码
设置编码,改成我们习惯的中文输出
|
XML JSON 前端开发
设置响应编码
修改我们网页响应出现中文乱码的情况
|
JavaScript 开发者
通过服务器端设置响应报文头来解决乱码问题|学习笔记
快速学习通过服务器端设置响应报文头来解决乱码问题
232 0