Шаблон Rest для postForEntity с файлом и другими свойствами - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу загрузить файл с Json-запросом в шаблоне rest вместе с другими свойствами.Но я не мог этого сделать.

@Bean
public RestTemplate getRestTemplate(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder.build();
}

@Autowired
private RestTemplate restTemplate;

@Scheduled(fixedDelay = 1000)
public void _do() throws Exception {
    HashMap<String, String> documentProperties = new HashMap<>();
    documentProperties.put("number", "123");


    MultipartFile file = Somefile;


    UploadDocumentRequest uploadDocumentRequest = new UploadDocumentRequest();
    uploadDocumentRequest.setDocumentClass("DocClass");
    uploadDocumentRequest.setDocumentProperties(documentProperties);
    uploadDocumentRequest.setFile(file);  ----???





    ResponseEntity<String> value = restTemplate.postForEntity("URL", uploadDocumentRequest, String.class);

    }

1 Ответ

0 голосов
/ 19 сентября 2019

Необходимо создать HttpEntity с заголовком и телом.

  1. Установите значение заголовка типа содержимого равным MediaType.MULTIPART_FORM_DATA .
  2. Создайте тело запроса как экземпляр класса LinkedMultiValueMap.
  3. Создайте экземпляр HttpEntity, который обернет заголовок и объект body, и опубликуйте его, используя RestTemplate.

Пример кода показан следующим образом:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);

MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
body.add("file", getFileToBeUploaded());

HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(body, headers);

RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.postForEntity(serviveUrl, requestEntity, String.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...