Java 带文件的postForEntity的Rest模板&;其他属性
我想在rest模板中上传带有Json请求的文件以及其他属性。但我做不到这一点Java 带文件的postForEntity的Rest模板&;其他属性,java,rest,spring-boot,Java,Rest,Spring Boot,我想在rest模板中上传带有Json请求的文件以及其他属性。但我做不到这一点 @Bean public RestTemplate getRestTemplate(RestTemplateBuilder restTemplateBuilder) { return restTemplateBuilder.build(); } @Autowired private RestTemplate restTemplate; @Scheduled(fixedDelay = 1000) public
@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);
}
@Bean
公共RestTemplate getRestTemplate(RestTemplateBuilder RestTemplateBuilder){
返回restTemplateBuilder.build();
}
@自动连线
私有RestTemplate RestTemplate;
@计划(固定延迟=1000)
public void_do()引发异常{
HashMap documentProperties=新建HashMap();
文件属性。放置(“编号”、“123”);
MultipartFile file=Somefile;
UploadDocumentRequest UploadDocumentRequest=新的UploadDocumentRequest();
uploadDocumentRequest.setDocumentClass(“DocClass”);
uploadDocumentRequest.setDocumentProperties(documentProperties);
uploadDocumentRequest.setFile(文件);----???
ResponseEntity值=restTemplate.postForEntity(“URL”,uploadDocumentRequest,String.class);
}
您必须创建带有标题和正文的HttpEntity
LinkedMultiValueMap
类的实例李>
HttpEntity
实例,该实例包装头部和主体对象,并使用restemplate
发布它李>
示例代码如下所示:
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);
HttpHeaders=newhttpheaders();
headers.setContentType(MediaType.MULTIPART\u FORM\u DATA);
MultiValueMap body=新链接的MultiValueMap();
add(“file”,getFileToBeUploaded());
HttpEntity requestEntity=新的HttpEntity(主体、标题);
RestTemplate RestTemplate=新RestTemplate();
ResponseEntity response=restTemplate.postForEntity(服务URL、请求实体、字符串.class);
但如何添加其他属性?我的控制器只接受UploadDocumentRequest类。uploadDocumentRequest.setDocumentClass(“DocClass”);uploadDocumentRequest.setDocumentProperties(documentProperties)@用户您可以将其他属性添加到HttpHeaders
中,例如headers.add(headerName,headerValue)
。但它将作为字符串对象。然后我必须将字符串对象转换为自定义对象。是否可以作为自定义对象直接发送?@User No!postForEntity
的API无法接受自定义对象。