我有两个微服务(内置在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个空问题。
让我知道我在想什么,或者有更好的方法。