Spring RestTemplate делает многостраничный запрос

У меня есть два микросервиса (построены в 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 нулевых проблем.

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

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

Vladlen Gladis 20.02.2019 08:09

Это все еще дает проблему org.springframework.web.client.HttpClientErrorException: 400 null

AshwinK 20.02.2019 08:17

Как вы звоните в Службу B напрямую?

mahieus 20.02.2019 08:54

Я звоню в службу 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); }

AshwinK 20.02.2019 09:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
540
0

Другие вопросы по теме