Spring RestTemplate提出多部分请求

时间:2019-02-20 07:04:45

标签: java spring-boot multipartform-data 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);

}

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个空问题。

让我知道我在想什么,或者有更好的方法。

0 个答案:

没有答案