У меня есть два микросервиса (встроенные в пружинную загрузку).Рассмотрим микросервис A
и микросервис B
.Я хочу сделать прокси-вызов из многочастной формы запроса.Для этого я использую RestTemplate.Но я получаю ошибку org.springframework.web.client.HttpClientErrorException: 406 null
.Он работает правильно, если я напрямую нажимаю на микросервис B
Ниже приведен код RestController (микросервис A
):
@RequestMapping(value = "/holidays",method = RequestMethod.POST,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<?> updateHolidays(@RequestPart("file") MultipartFile file) throws IOException {
periodService.updateHolidays(file);
return new ResponseEntity<>(true, HttpStatus.OK);
}
Метод PeriodService:
public void updateHolidays(MultipartFile file) throws IOException {
File tempFile = new File(System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") +
file.getOriginalFilename());
file.transferTo(tempFile);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.set("Accept","application/json' {\"type\":\"formData\"}");
MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", tempFile);
HttpEntity<MultiValueMap<String, Object>> requestEntity
= new HttpEntity<>(body, headers);
long startTime=System.currentTimeMillis();
ResponseEntity<String> response = restTemplate
.exchange(holidayURL, HttpMethod.POST, requestEntity, String.class);
LOGGER.info("updateHolidays: Time taken to execute rest:"+(System.currentTimeMillis()-startTime));
}
Я попытался удалить headers.set("Accept","application/json' {\"type\":\"formData\"}");
, но это дало 400 пустых значений.
Дайте мне знать, что мне не хватает, или есть лучший способ сделать это.