[英]SpringBoot POST Endpoint returning `No HttpMessageConverter`
我的任务是创建一个带有 POST 端点的 controller。 端点会将一些数据作为 InputStream。 目的是处理该数据并在响应中返回 stream。 响应的大小可能是几兆字节。
这是我的 controller::
@PostMapping(value = "/somePath")
public ResponseEntity<InputStream> processData(final InputStream data) {
InputStream processed = processor.process(data);
return ResponseEntity.ok().body(processed);
}
我正在使用以下内容对其进行测试::
@Autowired RestTemplate restTemplate;
private ResponseEntity<InputStream> request(){
HttpHeaders headers = new HttpHeaders();
headers.setAccept(singletonList(APPLICATION_OCTET_STREAM));
ResourceHttpMessageConverter converter = new ResourceHttpMessageConverter();
converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));
restTemplate.getMessageConverters().add(converter);
UriComponentsBuilder builder = fromUriString(format("http://localhost:%s/%s", serverPort, "/somePath"));
UriComponents uriComponents = builder.build().encode(UTF_8);
HttpEntity<InputStream> entity = new HttpEntity<InputStream>("Hello".getBytes(), headers);
return restTemplate.exchange(uriComponents.toUri(), HttpMethod.POST, entity, InputStream.class);
}
但是,我得到::
org.springframework.web.client.RestClientException: No HttpMessageConverter for [B
我尝试将 ByteArrayHttpMessageConverter 添加到我的 RestTemplate,但是当我这样做时,我得到::
org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : [<!doctype html><html lang="en"><head><title>HTTP Status 500 – Internal Server Error</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-colo... (455 bytes)]
任何帮助将非常感激!
您已经通过添加ByteArrayHttpMessageConverter
修复了客户端代码,这是有道理的,因为您给它一个byte[]
。
您已经知道ResourceHttpMessageConverter
,它默认注册在服务器上,那么为什么不使用它,即提供一个Resource
作为有效负载?
由于您有一个InputStream
,默认情况下没有消息转换器,因此请使用InputStreamResource
:
return ResponseEntity.ok().body(new InputStreamResource(processed));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.