Quiero programar una llamada de API REST para actualizar una cadena de una clase, que contiene el nombre de archivo de un archivo XML.
Estoy tratando de hacerlo con una llamada GET ... Pero puede ser una opción más adecuada.
Esta es una muestra url: http: // localhost / ChangeXML archivoConfig = Configuration.xml
@RequestMapping(value = "/changeXML",params= {"configFile"}, produces = { MediaType.APPLICATION_XML_VALUE},
headers = "Accept=application/xml",method = RequestMethod.GET)
public ResponseEntity<?> updateConfigFile(@RequestParam("configFile") String file) {
File f = new File(file);
System.out.println(f);
if(f.exists() && !f.isDirectory()) { //file is updated if and only if it exisits
System.out.println("FICHERO SI QUE EXISTEEEEE");
this.configFile=file;
return new ResponseEntity<String>("XML configuration file has been updated to: "+file, HttpStatus.OK);
}
System.out.println("PETITION");
//otherwise path is not going to be updated
return new ResponseEntity<String>("Unexisting XML", HttpStatus.OK);
}
Todo lo que quiero es el atributo archivoConfig actualizada. Pero aún así, toda vez que la aleta es el siguiente error: Esta página contiene los siguientes errores: error en la línea 1 en la columna 1: El documento está vacío A continuación se muestra una representación de la página hasta el primer error.
Mi xml puedo asegurar que estaba bien y ... incluso si pongo este otro URL, http: // localhost / ChangeXML archivoConfig = c% C3% B1dlvm% C3% B1ldfmv? Todavía tengo el mismo error.
Podría alguien proporcionar alguna información sobre esto? ¡Gracias por adelantado!
Dentro de su @RequestMapping
anotación, usted ha puesto el MediaType.APPLICATION_XML_VALUE
valor para el produces
parámetro. Esto significa que usted informe a su navegador que la respuesta contendrá XML.
Sin embargo, si se toma un vistazo a las respuestas, usted está volviendo texto sin formato en lugar de él. Su navegador probablemente intenta analizar esto como XML, pero no puede, y arroja un error.
La solución es decirle a su navegador que usted está volviendo texto sin formato, que es el text/plain
tipo de soporte o MediaType.TEXT_PLAIN
en la primavera:
@RequestMapping(
value = "/changeXML",
params= {"configFile"},
produces = {MediaType.TEXT_PLAIN}, // Change this
headers = "Accept=application/xml",
method = RequestMethod.GET)
En este caso, es probable que pueda salir fuera del produces
parámetro del todo, ya que la primavera va a ser capaz de resolver automáticamente este. Aún más, el headers
y params
los parámetros no son necesarios, ya sea en este caso, por lo que sólo podría escribir:
@RequestMapping(value = "/changeXML", method = RequestMethod.GET)
O incluso más corto:
@GetMapping("/changeXML")