Spring RestTemplate сделать многокомпонентный запрос - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть два микросервиса (встроенные в пружинную загрузку).Рассмотрим микросервис 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 пустых значений.

Дайте мне знать, что мне не хватает, или есть лучший способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...