Spring 4 Controller String to XML Response - PullRequest
       2

Spring 4 Controller String to XML Response

0 голосов
/ 15 января 2020

У меня есть @RestController, который возвращает ответ json, если есть ошибки, в противном случае при успешном ответе возвращается файл xml для загрузки. Мой xml является строкой, и я отправляю ответ обратно как:

return ResponseEntity.ok()
            .contentType(MediaType.TEXT_XML)
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + "myfile.xml" + "\"")
            .body(xmlAsString);

Однако, когда я проверяю его, содержимое возвращается в виде строки, а не в виде файла xml - всего xml часть заключена в кавычки "" и все кавычки в do c экранированы

Я пытался установить .contentType (MediaType.APPLICATION_ XML), но это не помогло.

Как мне вернуть xml строку из метода контроллера пружины как xml?

1 Ответ

0 голосов
/ 15 января 2020

Вы должны добавить атрибут produces, чтобы он имел значение MediaType.TEXT_XML_VALUE, потому что ваш POST API ответит на текстовое содержимое XML.

@RestController
public class XmlController {

  @PostMapping(path = "/download", produces = {MediaType.TEXT_XML_VALUE}, consumes = {MediaType.ALL_VALUE})
  public ResponseEntity<String> download() {
    return ResponseEntity.ok()
      .contentType(MediaType.TEXT_XML)
      .body(
          "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n" + 
          "<Student>\r\n" + 
          "    <age>32</age>\r\n" + 
          "    <name>John</name>\r\n" + 
          "</Student>"
      );
   }
}

Best,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...