не найдено подходящего HttpMessageConverter для типа ответа [класс java.lang.Object] и типа содержимого [multipart/form-data; Border = XXX; charset = UTF-8]
Я выполняю пост-вызов multipart formdata из пользовательского интерфейса для загрузки файла. Из пользовательского интерфейса вызов переходит к контроллеру компонента A, который вы можете рассматривать как общий компонент или шину, которая просто читает поток, передает поток другому контроллеру компонента B через вызов rest, который загружает файл и отправляет обратно метаданные о загруженном файле в json. формат.
Проблема: вызов успешно проходит до контроллера компонента B, файл загружен, но когда ответ компонента B достигает компонента A, я получаю ошибку ниже
"message": "Не удалось извлечь ответ: не найден подходящий HttpMessageConverter для типа ответа [класс java.lang.Object] и типа содержимого [multipart/form-data; Border =HWhdmg6KNJw_kaP4wWnLyoAb9htc8StF4;charset=UTF-8]"
Может кто-нибудь помочь, пожалуйста?
Компоненты Код
@PostMapping(value = "/v3/documents",consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity uploadMultipartDocument(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {
ResponseEntity<?> responseEntity = null;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.set(HznAppsHeaderConstant.DOCUMENT_TYPE, HznAppsUtil.getHeaderFromCustomHeaderParameterProvider(customHeaderParameterProvider, HznAppsHeaderConstant.DOCUMENT_TYPE));
InputStream stream =null;
MultiValueMap<String, Object> params= new LinkedMultiValueMap<String, Object>();
try{
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterStream = upload.getItemIterator(req);
while (iterStream.hasNext()){
FileItemStream item = iterStream.next();
stream = item.openStream();
if (!item.isFormField() && item.getFieldName().equalsIgnoreCase("file")) {
InputStreamResource inputStream = new InputStreamResource(stream) {
@Override
public String getFilename() {
return item.getName();
}
@Override
public long contentLength() {
return -1;
}
};
params.add("file", inputStream);
break;
}
}
final HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(params, headers);
restTemplate.getInterceptors().clear();
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setBufferRequestBody(false);
restTemplate.setRequestFactory(requestFactory);
responseEntity = restTemplate.exchange("Component B URL", HttpMethod.POST, httpEntity, Object.class);
} catch (Exception e) {
e.printStackTrace();
}
return responseEntity;
}
Код компонента B
@RequestMapping(value = "/api/v3/documents", produces = {"application/json"}, consumes = {"multipart/form-data"}, method = RequestMethod.POST)
public ResponseEntity uploadMultipartDocument(HttpServletRequest request) {
ResponseDocument responseDocument = null;
try {
responseDocument = documentsService.uploadMultiPartDocument(request,documentType); // Doing Soap call to upload document and its works fine in this method
} catch (Exception e) {
e.printStackTrace();
}
return new ResponseEntity<>(responseDocument, HttpStatus.OK);
}
Благодарность