Estou tentando RestTemplate
chamar uma API que aceita um arquivo de imagem e que ele posteriormente grava/carrega em seu servidor.
Abaixo está o instantâneo da API no postman que estou tentando chamar usandoRestTemplate
Agora, para chamar essa API, escrevi um código que usa RestTemplate
para chamar essa API. Para coletar o Multipart
image
, criei uma classe bean simples, que tem uma única variável membro private MultipartFile image;
com seus getters e setters.
public class ImageClass implements Serializable{
private static final long serialVersionUID = 1L;
private MultipartFile image;
public MultipartFile getImage() {
return image;
}
public void setImage(MultipartFile image) {
this.image = image;
}
}
Em seguida, usei este arquivo no @modelAttribute
código abaixo:
@PutMapping(value="api/update/image/{id}")
public String uploadFile(@PathVariable(name = "id")String id, @ModelAttribute ImageClass imageClass) {
MultipartFile file = imageClass.getImage();
RestTemplate restTemplate = new RestTemplate();
String url = "http://172.18.5.19:8082/api/upload/image/23";
String accessToken = getCrmAccessToken();
HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Bearer "+accessToken);
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
MultiValueMap<String, Object> parts =
new LinkedMultiValueMap<String, Object>();
try {
parts.add("image", new ByteArrayResource(file.getBytes()));
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity<MultiValueMap<String, Object>> requestEntity =
new HttpEntity<MultiValueMap<String, Object>>(parts, headers);
ResponseEntity<String> response =
restTemplate.exchange(url,
HttpMethod.PUT, requestEntity, String.class);
if (response != null && !response.getBody().trim().equals("")) {
return response.getBody();
}
return "error";
}
Agora estou recebendo a seguinte resposta no console:
org.springframework.web.client.HttpClientErrorException$BadRequest: 400 : "{"timestamp":1727438078594,"status":400,"error":"Bad Request","path":"/api/upload/image/23"}"
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:103) ~[spring-web-6.0.9.jar:6.0.9]
Por meio da minha API, essa API real deve ser chamada, então também estou tentando como uma solicitação PUT no postman, como abaixo
Estou dando cabeçalhos corretos? Ele exigiu um token portador (nenhum problema na geração de token portador), todas as outras APIs estão funcionando bem com esse código de geração de token portador. Somente esta API está causando o problema. O que devo fazer para resolver esse problema?
Eu até tento com @RequestParam("image") final MultipartFile image
em vez de @modelAttribute
. Mas a mesma resposta está vindo.
1 respostas