1

我意识到在我尝试创建的项目中存在一些关联。我正在使用 RestTemplate。我正在尝试连接服务器并检索数据。一切都很顺利,直到我决定在多个控制器类中破坏我的程序。看看我做了什么。在这些新类中的每一个中,我都会在其中插入:

RestTemplate restTemplate= new RestTemplate();

为了检索数据,我只使用 JAXB 注释(用于数据绑定),我可以检索我想要的任何内容。但是当我试图在新类中执行这行代码时:

 ResponseEntity<AClass> result = restTemplate.exchange("url",
                        HttpMethod.GET, entity, AClass.class);

我正在接受这个例外:RestClientException“无法提取响应:没有找到适合响应类型 [AClass] 和内容类型 [application/xml] 的 HttpMessageConverter”

如果我把它放回上一课可以毫无问题地执行。真的我不明白为什么。可能是因为我在新类中使用了一个新的 RestTemplate。我尝试声明不同的 RestTemplates 并以这种方式声明:@Autowired 但问题仍然存在。我应该在调度程序 servlet 中声明一些新内容吗?此外,我可以在许多类中调用对象 restTemplate(RestTemplate restTemplate=new RestTemplate())。我应该在特定的类中声明它并从那里调用它吗?我该怎么办?我期待你的提议。

4

1 回答 1

0

您之前是如何restTemplate设置实例的?您必须向实例注册 a MarshallingHttpMessageConverterRestTemplate否则它将不知道如何解组 XML。像这样的东西:

Jaxb2Marshaller jaxbMarshaller = new Jaxb2Marshaller();
// Make sure context paths includes AClass's package
jaxbMarshaller.setContextPaths("com.example.generated");
MarshallingHttpMessageConverter converter = new 
    MarshallingHttpMessageConverter(jaxbMarshaller, jaxbMarshaller);
restTemplate.setMessageConverters(Arrays.<HttpMessageConverter<?>> asList(converter));
于 2012-05-14T10:41:33.583 回答