Невозможно вызвать API загрузки файла с помощью RestTemplateJAVA

Программисты JAVA общаются здесь
Anonymous
Невозможно вызвать API загрузки файла с помощью RestTemplate

Сообщение Anonymous »

Используя RestTemplate Я пытаюсь вызвать некоторый API, который принимает файл изображения, который затем записывает/загружает на свой сервер.
Ниже приведен снимок API в почтальоне, который Я пытаюсь позвонить с помощью RestTemplate
Изображение

Теперь, чтобы вызвать этот API, я написал код, который использует RestTemplate для вызова этого API.
Чтобы собрать Multipart изображение , я создал простой класс bean-компонента, который имеет одночленную переменную Private MultipartFile image; с ее методами получения и установки.

Код: Выделить всё

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;
}
}
Далее я использовал этот файл в @modelAttribute в приведенном ниже коде:

Код: Выделить всё

@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 parts =
new LinkedMultiValueMap();
try {
parts.add("image", new ByteArrayResource(file.getBytes()));
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity requestEntity =
new HttpEntity(parts, headers);

ResponseEntity response =
restTemplate.exchange(url,
HttpMethod.PUT, requestEntity, String.class);

if (response != null && !response.getBody().trim().equals("")) {
return response.getBody();
}

return "error";
}
Теперь я получаю ответ ниже на консоли:

Код: Выделить всё

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]
Через мой API этот фактический API должен быть вызван, поэтому я также пробую его как запрос PUT в почтальоне, как показано ниже.
Изображение

Я даю правильные заголовки. Для этого требуется токен на предъявителя (нет проблем при генерации токена-носителя), все остальные API работают нормально с этим кодом генерации токена-носителя. Только этот API вызывает проблему. Что мне делать, чтобы решить эту проблему?
Я даже пытаюсь использовать окончательное изображение MultipartFile @RequestParam("image") вместо @modelAttribute. Но ответ будет тот же.

Подробнее здесь: https://stackoverflow.com/questions/790 ... sttemplate

Вернуться в «JAVA»