Spring Resttemplate - Нет подходящего httpmessageconverter для типа ответа [..] и типа содержимого [приложение/xml

StackOverflow https://stackoverflow.com/questions/8802499

Вопрос

У меня есть проблема с доступом к службе отдыха с Resttemplate. Мне уже удалось использовать MarshallingConverter, чтобы получить доступ к еще одной службе, и все работало нормально. Я скопировал эту функциональность и сгенерировал классы модели из схемы XSD, которую я получил. Однако я получаю исключение, что подходящего конвертера не было. Вот моя конфигурация (я использую Spring 3.0.6 в связи с Ваадином, если это важно):

<bean id="marshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller" />
    <property name="unmarshaller" ref="jaxbMarshaller" />
</bean>

<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            ... here are my model classes ...
        </list>
    </property>
</bean>

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <ref bean="marshallingConverter" />
        </list>
    </property>
</bean>

Resttemplate является автоматическим внедрением в моей реализации клиента. Что мне здесь не хватает? Я проверил ответ, и тип контента устанавливается на Application/XML, и классы модели были автогенерированы, поэтому конфигурация должна быть правильной. Спасибо за помощь.

Это было полезно?

Решение

Итак, я сделал эту работу. Часть проблемы заключалась в том, что в сгенерированных классах отсутствовали аннотация XMLRootelement. Подробнее об этом здесь. Анкет Итак, я добавил аннотацию XJC в схему XSD и снова сгенерировал классы:

xjc -extension /path/to/schema

После этого все сработало (или, по крайней мере, у меня не было никакого исключения, обработка XML), но элементы изнутри корневого элемента не были Unmarshallised, и я получил только импланку Xmlelement от анализатора. Проблема была (это было специфичным для моего проекта), что определение элемента использовало XS: Anytype в качестве типа элемента, который не может быть проанализирован. После того, как я изменил его на правильный тип элемента, все работало как очарование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top