Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

936
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda