我正在写一个春季mvc应用程序(Spring新手),它必须调用休息服务。我在我的VM中部署了其余服务(Linux中的weblogic 10.3.6),我正在编写的应用程序位于我的本地笔记本电脑weblogic(Windows 8.1中的10.3.6)中。
当我尝试调用其他服务时,该请求适用于restservice应用程序,但响应失败并显示以下消息
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.myclass.Acct] and content type [application/json;charset=UTF-8]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:110)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:572)
我正在我的控制器&中初始化其余客户端调用如下方法
Class1 ccc = new Class1();
Client client = new Client("REST URL","key","key1","USR",ccc);
client.getService("String"));
在实际的客户端中,对休息服务的调用如下所示
Acct acct1 = restClient.getRestTemplate().getForObject("URL", Acct.class, "USR");
我得到的错误在上面一行。我不知道如何设置响应类型。当我将Acct.class更改为String.class并将Acct acct1更改为Object acct1时,它可以正常工作。
我是否需要在我的dispatcher-servlet.xml中为响应类型json设置任何内容?让我知道是否需要任何其他配置才能使其工作。我确实看过与此相关的其他帖子,但没有帮助。感谢。
答案 0 :(得分:3)
感谢您的帮助。我已经解决了这个问题,现在正在运作。
我做了以下更新:
在我的pom.xml中
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.5.3</version>
</dependency>
在我的调度程序servlet中
<!-- Configure to plugin JSON as request and response in method handler -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonMessageConverter"/>
</list>
</property>
</bean>
<!-- Configure bean to convert JSON to POJO and vice versa -->
<bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</bean>
在我的代码中(Acct类)
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
...........
..........
@JsonIgnore
@JsonProperty(value = "........")
public Set getMethod()
{
return this.............;
}
现在,我可以从其他服务中获得结果。
感谢。