Spring Resttemplate-未找到用于响应类型[..]和内容类型[Application/XML]的合适的httpmessageconverter

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

我在使用RESTTEMPLATE访问REST服务时遇到了问题。我已经设法用户用户搜索了其他服务,一切正常。我已经复制了此功能,并从我收到的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在我的服务客户端类实现中自动进行。我在这里想念什么?我已经检查了响应,并且内容类型设置为应用程序/XML,并且模型类是自动化的,因此配置应正确。谢谢你的帮助。

有帮助吗?

解决方案

所以我做了这项工作。问题的一部分是,生成的类缺少XMLrootelement注释。有关它的更多信息 这里. 。因此,我已经在XSD模式中添加了XJC注释,并再次生成了类:

xjc -extension /path/to/schema

之后,一切都起作用了(或者至少我没有任何例外处理XML),但是根部元素内部的元素并没有取消缩写,我只从解析器那里获得了XMLElement Imperpementation。问题是(这对我的项目是特定的),元素定义使用xs:anytype作为元素类型,无法解析。将其更改为正确的元素类型后,一切都像魅力一样工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top