gpt4 book ai didi

java - 使用 rest 调用更新 xml 文件路径

转载 作者:搜寻专家 更新时间:2023-11-01 03:31:01 25 4
gpt4 key购买 nike

我想编写一个 api rest 调用来更新一个类的字符串,其中包含一个 xml 文件的文件名。

我正在尝试通过 GET 调用来实现...但可能有更合适的选择。

这是一个 url 示例:http://localhost/changeXML?configFile=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);
}

我只需要更新属性configFile。但是,我所发现的只是以下错误:此页面包含以下错误:第 1 行第 1 列错误:文档为空以下是第一个错误之前的页面呈现。

我的 xml 我可以保证它没问题,而且...即使我输入其他 url,http://localhost/changeXML?configFile=c%C3%B1dlvm%C3%B1ldfmv我仍然有同样的错误。

有人可以提供一些这方面的信息吗?提前致谢!

最佳答案

在您的 @RequestMapping 注释中,您为 produces 参数设置了 MediaType.APPLICATION_XML_VALUE 值。这意味着您告诉浏览器响应将包含 XML。

但是,如果您查看响应,则会返回纯文本。您的浏览器可能会尝试将其解析为 XML,但无法解析,并抛出错误。

解决方案是告诉您的浏览器您正在返回纯文本,即 text/plain 媒体类型,或者在 Spring 中为 MediaType.TEXT_PLAIN:

@RequestMapping(
value = "/changeXML",
params= {"configFile"},
produces = {MediaType.TEXT_PLAIN}, // Change this
headers = "Accept=application/xml",
method = RequestMethod.GET)

在这种情况下,您可能可以完全放弃 produces 参数,因为 Spring 将能够自动解决这个问题。更重要的是,在这种情况下,headersparams 参数也不是必需的,因此您可以只写:

@RequestMapping(value = "/changeXML", method = RequestMethod.GET)

或者更短:

@GetMapping("/changeXML")

关于java - 使用 rest 调用更新 xml 文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55418963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com