Я использую Реселлет ServerResource в приложении Restlet EE для обработки сообщения XML. Если я аннотирую @Post и принимаю параметр Представления, то принимаются text / xml и application / xml. Даже если изменить аннотацию на @Post ("xml"), оба типа принимаются. Если я изменяю параметр на DomRepresentation, то application / xml отклоняется с кодом состояния 422 и сообщением:
Сервер понимает тип содержимого объекта запроса, и синтаксис объекта запроса является правильным, но не смог обработать содержащиеся в нем инструкции
Я тестирую с Postman и просто меняю тип Body между необработанным XML (application / xml) и XML (text / xml). документация указывает , что org.restlet.ext.xml.DomRepresentation обрабатывает APPLICATION_ALL_XML, APPLICATION_XML и TEXT_XML.
Чего мне не хватает?
Это нормально для обоих:
@Post
public Representation doPost(Representation entity) {
return entity;
}
Так это:
@Post("xml")
public Representation doPostXml(Representation entity) {
return entity;
}
Возвращает 422:
@Post("xml")
public Representation doPostXml(DomRepresentation entity) {
return entity;
}
DomRepresentation будет принимать документ xml при публикации в виде текста text, text / plain, text / xml и text / html, но не как application / xml.
Я попробовал XmlRepresentation.
@Post
public Representation doPost(XmlRepresentation entity) {
return entity;
}
Ошибка 422 для текста / xml и application / xml. С текстом возвращается 415 и это сообщение:
Сервер отказывается обслуживать запрос, поскольку объект запроса находится в формате, который не поддерживается запрошенным ресурсом для запрошенного метода.
Restlet EE 2.3.12 от maven.restlet.com, размещенный в контейнере Tomcat 8.5 с использованием Java 1.8.