Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

942
Visualizações
MultipartFile falló en RestTemplate con - Solicitud incorrecta 400 Sin cuerpo

Aquí están los detalles del enfoque:

  1. Mi aplicación web tomará el archivo.
  2. Una vez cargado un archivo, se recibe en el lado del servidor en forma de MultipartFile.
  3. Lo enviaré a otro servicio tal como está. (como un MultipartFile).

Estoy pasando el objeto de archivo de varias partes a otro servicio de API de descanso. Aquí está el código. (El método HTTP es POST, la URL es "/uploadDocument")

 public ResponseEntity<String> executeMultipartRequest(String url, HttpMethod method, MultipartFile obj){ HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); requestHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); body.add("file", obj.getResource()); HttpEntity<?> requestEntity = new HttpEntity<>(body, requestHeaders); return restTemplate.exchange(url, method, requestEntity, String.class); }

Este es el servicio al que llamo desde el método anterior:

 @PostMapping(value = "/uploadDocument", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("userName") String userName) { return null; // removed actual code. }

Pero cuando ejecuto el método obtengo el siguiente error:

org.apache.catalina.core.StandardWrapperValve invocar GRAVE: Servlet.service() para servlet [despachador] en contexto con ruta [/attest] arrojó excepción [Procesamiento de solicitud fallido; la excepción anidada es org.springframework.web.client.HttpClientErrorException$BadRequest: 400 : [sin cuerpo]] con causa raíz org.springframework.web.client.HttpClientErrorException$BadRequest: 400 : [sin cuerpo]

¿Alguna idea de cuál es exactamente el problema?

También quiero saber, ¿es correcto el enfoque?

¿Se requiere algún cambio?

¿Alguna sugerencia?

Gracias,

Atul

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puedo enviar el objeto MultipartFile a través de la API de descanso.

Estos son los cambios que hice en el código existente que mencioné en la pregunta.

Este es el código de trabajo:

 public ResponseEntity<String> executeMultipartRequest(String url, HttpMethod method, Object obj, Map<String, String> dataMap){ HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); requestHeaders.setCacheControl(CacheControl.noCache()); MultiValueMap<String, Object> body = new LinkedMultiValueMap<>(); ContentDisposition contentDisposition = ContentDisposition.builder("form-data") .name("file") .filename(((MultipartFile)obj).getOriginalFilename()) .build(); body.add(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString()); body.add("file", ((MultipartFile)obj).getResource()); body.add("Content-Type", ((MultipartFile)obj).getContentType()); addData(body, dataMap); HttpEntity<?> requestEntity = new HttpEntity<>(body, requestHeaders); logger.debug("executeMultipartRequest => before executing rest api request."); return restTemplate.exchange(url, method, requestEntity, String.class); } private void addData(MultiValueMap<String, Object> body, Map<String, String> dataMap) { if(!dataMap.isEmpty()){ dataMap.forEach((key, value) -> body.add(key, value)); } }

La solución que apliqué es enviar el archivo como datos de formulario agregándolo a ContentDisposition.

Establezca las propiedades requeridas.

La URL del punto final es la misma que se menciona en la pregunta.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda