У меня есть два микросервиса (построены в spring-boot). Давайте рассмотрим микросервис 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);
}
Метод службы периода:
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 нулевых проблем.
Дайте мне знать, что мне не хватает, или есть лучший способ сделать это.
Это все еще дает проблему org.springframework.web.client.HttpClientErrorException: 400 null
Как вы звоните в Службу B напрямую?
Я звоню в службу B напрямую, используя swagger-ui, а также почтальона, и он работает нормально. Структура конечной точки службы B: @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); }




У вас неправильный заголовок принятия, оставьте его пустым или установите как
"Accept","application/json"