Почему весна @PostMapping @Requestbody появляется как экранированные символы? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть метод пружинной загрузки контроллера:

@PostMapping(path = "/myPath")
public String methodName(@RequestBody String incoming) { ... 

Однако, если я попытаюсь опубликовать в нем файл XML с помощью curl, например:

curl -X POST http://localhost:8080/myPath --data-binary @./my/path/my_file.xml

входящая строка - все экранированные символы, например:

%3C%3Fxml+version=%221.0%22+encoding%3D%22UTF-8%...

и он взрывается, пытаясь разобрать его с ...Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.

когда это должно быть похоже на <?xml version="1.0" что происходит?

1 Ответ

0 голосов
/ 04 апреля 2019

Все еще не то, что происходило, но добавление curl --header "Content-Type:text/xml" исправило это. Я предполагаю, что по умолчанию установлено значение application/x-www-form-urlencoded, и вышеприведенное переопределяет его, что необходимо , не знаю, почему, может быть, веб-фреймворк предполагает, что необходимо дополнительное кодирование или нет. Вы можете увидеть, какой из них он использует, запустив curl -v и убедившись, что он не закодирован в формате urlencoded.

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