1

我正在尝试通过 restTemplate 连接到服务器端以检索 xml。但是我收到了 RestClientException 和这条消息:“无法提取响应:没有找到适合响应类型 [frontend.model.Registration] 和内容类型 [application/xml] 的 HttpMessageConverter”在调度程序-servlet 中我写了这个:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
 <property name="mediaTypes">
    <map>
        <entry key="xml" value="application/xml"/>
        <entry key="atom" value="application/atom+xml"/>
        <entry key="html" value="text/html"/>
    </map>
 </property>
 <property name="viewResolvers">
    <list>
        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
    </list>
 </property>

之后我添加了这个:

  <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>

异常也出现在这一行:3

 ResponseEntity<Registration> result = restTemplate.exchange("http://www.../ckp/user/{id}",
                    HttpMethod.GET, entity, Registration.class, id);

我现在无法解决问题。我正在考虑添加 ViewResoler 和 MessageConverter,因为我不知道哪些解析器和哪些转换器。任何人都可以提出一些尝试吗?我应该在 disptcher servlet 上添加一些东西吗?我应该添加一个库吗?我的模型类是 pojo 的包含 jaxb 注释。

4

1 回答 1

2

您需要将 xml 消息转换器 bean 添加到RestTemplatebean 定义中。这就是我使用的:

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
        </list>
    </property>
</bean>

不要忘记将restTemplatebean 注入到您的类中(通过 xml 或注释)。

编辑:在您调用 RestTemplate 的类中,添加如下字段:

@Inject
private RestTemplate restTemplate;
于 2012-05-11T00:26:04.520 回答